Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在多个表单上指定验证摘要_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

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()
}