Asp.net mvc 在多个表单上指定验证摘要
我在一页上有两张表格,如下所示:Asp.net mvc 在多个表单上指定验证摘要,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我在一页上有两张表格,如下所示: @using (Html.BeginForm()) { @Html.ValidationSummary() @Html.Label("code", "Confirmation Code") @Html.TextBox("code") <input type="submit" value="Go" /> } @using (Html.BeginForm("SendConfirmation", "Auth")) {
@using (Html.BeginForm())
{
@Html.ValidationSummary()
@Html.Label("code", "Confirmation Code")
@Html.TextBox("code")
<input type="submit" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
@Html.ValidationSummary()
@Html.Label("email", "Email")
@Html.TextBox("email")
<input type="submit" value="Resend" />
}
@使用(Html.BeginForm())
{
@Html.ValidationSummary()
@标签(“代码”、“确认代码”)
@文本框(“代码”)
}
@使用(Html.BeginForm(“SendConfirmation”、“Auth”))
{
@Html.ValidationSummary()
@标签(“电子邮件”、“电子邮件”)
@Html.TextBox(“电子邮件”)
}
如果
SendConfirmation
抛出错误,将显示2个验证摘要。如何使验证摘要针对自己的目标?解决方案是仅在验证表单时绘制验证摘要
有关更多详细信息,请检查为了完成此操作,您需要将两个表单分开,将每个表单放在部分视图中,如果验证失败,请在提交时返回部分视图。更改操作结果以返回部分结果 可以使用以下方法在页面中呈现局部视图:
@Html.partial("_PartialView")
或者,如果需要传递模型,也可以采用这种方式
@Html.partial("_Partial", Model)
同一页上不能有两个验证摘要。
Html.ValidationSummary()
不需要在表单
元素中,大多数情况下只需要一次。我会把它移到你的两种形式之外,像是在你的主体内容之上,这会给你想要的效果。我相信在我的上一个应用程序中,我把它放在了布局文件中。在两个表单上为提交按钮指定一个唯一的名称,如下所示:
@using (Html.BeginForm())
{
@Html.ValidationSummary()
@Html.Label("code", "Confirmation Code")
@Html.TextBox("code")
<input type="submit" name="login-top" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
@Html.ValidationSummary()
@Html.Label("email", "Email")
@Html.TextBox("email")
<input type="submit" name="login-main" value="Resend" />
}
这是对两个验证摘要问题的回答。仅绘制要显示的验证摘要。例如,用户单击登录。在控制器中,将模型的属性(如“CurrentAction”)设置为“logging In”,然后在视图中使用该属性,以不绘制表单的注册部分的验证摘要。这可以正常工作,但在下次加载时,您将丢失客户端验证摘要,因为占位符元素不在其中。您可以添加else语句并呈现通常存在的
和空
元素。
if (Request.Form.AllKeys.Contains("login-top"))
{
@Html.ValidationSummary()
}