组合模型验证摘要

时间:2013-02-15 13:10:49

标签: asp.net-mvc razor

这是我关于stackoverflow的第一个问题,所以如果我错过了什么,请好心。 我有两个表单,每个表单链接到自己的操作(用于数据修改)组合在一个视图中。目前,我正在使用partials和一个父模型,它由分配给表单的两个模型组成。

我的主视图看起来有点像这样:

@model ReportingUploadPortal.Models.ManageUserDataModel
@Html.Partial("_ChangePasswordPartial", Model.PasswordModel)
@Html.Partial("_ChangeEMailPartial",Model.EmailModel)

我的父模型是:

public class ManageUserDataModel
{
    public ChangeEmailModel EmailModel { get; set; }
    public LocalPasswordModel PasswordModel { get; set; }
}

对于我的两个部分视图(它们非常相似),我得到两次显示的验证摘要信息。似乎验证信息与父模型相关联,而不是与两个子模型中的每一个相关联。

@using (Html.BeginForm("ChangeEmail", "Account")) {
@Html.AntiForgeryToken()
@Html.ValidationSummary()

<fieldset>
    <legend>Change your email</legend>
    <ol>
        <li>
            @Html.LabelFor(m => m.EMail)
            @Html.TextBoxFor(m => m.EMail)
        </li>
        <li>
            @Html.LabelFor(m => m.ConfirmEMail)
            @Html.TextBoxFor(m => m.ConfirmEMail)
        </li>
    </ol>
    <input type="submit" value="Change email" />
</fieldset>

}

如何为每个表单/模型获得单独的验证摘要?

1 个答案:

答案 0 :(得分:0)

@Html.ValidationSummary()就是摘要。它实际上是模型上的错误列表。所以我相信每个模型都应该有自己的总结(不确定)。

我相信您会收到重复的摘要,因为您在每个局部视图中的每个表单中都有以下行:@Html.ValidationSummary()。每次有这行时,它都会将整个摘要打印到页面。您可以使用一些标志更改摘要的粒度,但也可以使用整个摘要的替代方法,例如@Html.ValidationMessage()

希望有所帮助!