在 mvc4 中使用多个 html 同名助手
Working with multiple html helpers of same name in mvc4
我有多个 html 帮手。当我单击登录按钮时,我使用 jquery 禁用 user_register div 并且当我输入详细信息时,模型活页夹能够正确绑定但是当我单击注册时,我禁用 user_login div 并启用 user_register div 并且当我输入详细信息时,只有电子邮件和名字是模型活页夹能够绑定的内容,而不是用户名和密码。这是因为我不止一次使用相同的 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
}
您没有显示完整视图,但假设所有这些控件都是在一个表单元素内生成的,那么所有控件都将 post 返回,除非您禁用输入。如果是这样,那么第一个带有 name="Email"
的输入被绑定,第二个被 DefaultModelBinder
忽略。 (因为第一个只是隐藏的,它的值可能是空的)。您的脚本需要确保禁用登录部分中的 2 个输入,例如
@Html.TextBoxFor(model => model.Email, new { id = "login-email" })
和
$('#login-email').prop('disabled', true);
注意 id
属性,这样您就可以 select 正确的(并防止无效的重复 ID html。
另一种方法是创建 2 个单独的表单。
我有多个 html 帮手。当我单击登录按钮时,我使用 jquery 禁用 user_register div 并且当我输入详细信息时,模型活页夹能够正确绑定但是当我单击注册时,我禁用 user_login div 并启用 user_register div 并且当我输入详细信息时,只有电子邮件和名字是模型活页夹能够绑定的内容,而不是用户名和密码。这是因为我不止一次使用相同的 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
}
您没有显示完整视图,但假设所有这些控件都是在一个表单元素内生成的,那么所有控件都将 post 返回,除非您禁用输入。如果是这样,那么第一个带有 name="Email"
的输入被绑定,第二个被 DefaultModelBinder
忽略。 (因为第一个只是隐藏的,它的值可能是空的)。您的脚本需要确保禁用登录部分中的 2 个输入,例如
@Html.TextBoxFor(model => model.Email, new { id = "login-email" })
和
$('#login-email').prop('disabled', true);
注意 id
属性,这样您就可以 select 正确的(并防止无效的重复 ID html。
另一种方法是创建 2 个单独的表单。