锚标记作为提交按钮?

Keh*_*mme 9 html forms asp.net-mvc razor

我正在将现有网站转换为使用MVC和实体框架.

布局/样式应该保持不变,并且为了遵循该指南,我需要使用<a>标签提交我的登录表单,因为它具有按钮的自定义图像.

这是我的表格:

@using (Html.BeginForm("Login", "Login", FormMethod.Post, new { id = "login", action = "Login" }))
{
    <label>
        <span>Username
        </span>
        <input type="text" name="UserName" id="UserName" class="input-text required" />
    </label>
    <label>
        <span>Password
        </span>
        <input type="password" name="Password" id="Password" class="input-text required" />
    </label>
    <label>
        <input type="checkbox" name="RememberMe" id="RememberMe" class="check-box" />
        <span class="checkboxlabel">Remember Me</span>
    </label>
    <div class="spacer">
        <a href="javascript:void(0)" onclick="login();" class="login-button"></a>
    </div>
}
Run Code Online (Sandbox Code Playgroud)

如您所见,<a>标签以前使用javascript提交了登录信息.这不是我想要完成的.

如何更改该标签以将我的表单提交给我的控制器操作?

Gök*_*gin 10

我做了一些小改动

HTML

<form action="test.aspx" type="POST">
    <label>
        <span>Username</span>
        <input type="text" name="UserName" id="UserName" class="input-text required" />
    </label>
    <label>
        <span>Password</span>
        <input type="password" name="Password" id="Password" class="input-text required" />
    </label>
    <label>
        <input type="checkbox" name="RememberMe" id="RememberMe" class="check-box" />
        <span class="checkboxlabel">Remember Me</span>
    </label>
    <div class="spacer">
        <a href="javascript:void(0)" class="login-button">Login</a>
    </div>
</form>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$(document).ready(function(){
   $(document).on("click",".login-button",function(){
     var form = $(this).closest("form");
     //console.log(form);
     form.submit();
   });
});
Run Code Online (Sandbox Code Playgroud)

的jsfiddle


Jay*_*Jay 6

通常你不想在html标签中放入大量的javascript,但如果这只在你的解决方案中出现一次,那就没问题了.但是,如果有需要使用Gokan的解决方案发布的锚标签将更好地使用标记类和一些常见的javascript.

将您的锚标记更改为更像这样:

<a href="javascript:$('form').submit();" class="login-button"></a>
Run Code Online (Sandbox Code Playgroud)

  • -1:这是将基于JavaScript的行为附加到标记的最糟糕方式. (3认同)
  • @tereško 如果您强烈挑战此解决方案,也许您可​​以详细说明,甚至推荐其他东西。 (2认同)