在mvc4中使用多个同名的html帮助程序

时间:2015-01-12 06:56:47

标签: asp.net-mvc-4

我有多个html助手。当我单击登录按钮时,我使用jquery禁用user_register div,当我输入详细信息时,模型绑定器能够正确绑定用户名和密码,但是当我单击Register时,我将禁用user_login div并启用user_register div,当我输入详细信息时email和firstname是模型绑定器能够绑定的,而不是用户名,密码。这是becoz我不止一次使用相同的HTML帮助程序。怎么处理这个。我有以下代码

<div class="user_login">
 <label>Email / Username</label>
   @Html.TextBoxFor(model => model.Email)
   <br />
   <label>Password</label>
   @Html.TextBoxFor(model => model.Password)                                       
    <br />    
     <div class="action_btns">
      <div class="one_half"><a href="#" class="btn back_btn"><i class="fa fa-angle-double-left"></i>Back</a>
      </div>
     <div class="one_half last">
      <input type="submit" style="border: none" name="action" class="btn btn_red" value="Login" />
      </div>
     </div>
     <a href="#" class="forgot_password">Forgot password?</a>
  </div>
  <div class="user_register">
    <label>Full Name</label>
     @Html.TextBoxFor(model => model.First_Name)<br />
     <label>Email Address</label>
     @Html.TextBox(model=>model.Email)<br />
      <label>User Name</label>
      @Html.TextBoxFor(model => model.User_Name)<br />
      <label>Password</label>
      @Html.TextBox(model=>model.Password") <br />
  </div>

控制器在此处

public ActionResult Index(Customer customer, string Action)
{
 //something here
}

1 个答案:

答案 0 :(得分:1)

您没有向您展示完整视图,但假设所有这些控件都是在一个表单元素中生成的,那么除非您禁用输入,否则所有控件都将回发。如果是,那么name="Email"的第一个输入被绑定,第二个输入被DefaultModelBinder忽略。 (因为第一个只是隐藏的,它的值可能是空的)。您的脚本需要确保禁用登录部分中的2个输入,例如

@Html.TextBoxFor(model => model.Email, new { id = "login-email" })

$('#login-email').prop('disabled', true);

请注意id属性,以便您可以选择正确的属性(并防止重复的ID,这是无效的HTML。

另一种方法是创建2个单独的表单。