[asp.net-mvc]添加 MVC ValidationMessageFor 分离 Div 标签

发布时间: 2017/3/25 13:12:06
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

有没有办法将所有的 @Html.ValidationMessageFor 块添加到一个 div 容器的 MVC 父 _layout.cshtml 页页脚中?下面的代码演示验证消息在底部 div 中,但我想要显示他们的 _Layout.cshtml DIV 页脚中使用 jQuery。

@model Proj.ViewModels.ApplicationControllerViewModel
@Html.ValidationSummary(true)

@using (Html.BeginForm(null, null, FormMethod.Post, new { id = "Details" }))
{
    <div id="divApplication">
        <div class="editor-label">
            @Html.LabelFor(model => model.Applicaiton.Name, new { @class = "formLabel" })
            @Html.HiddenFor(model => model.Applicaiton.ID, new { @class = "Application-ID" }) 
            @Html.TextBoxFor(model => model.Applicaiton.Name, new { @class = "Application-Name" })
        </div>
        <br />
        <div class="editor-label">
            @Html.LabelFor(model => model.ControllerList, new { @class = "formLabel" })
            @Html.DropDownList("ControllerList", Model.ControllerList, new { @class = "Application-ControllerList"})
        </div>
        <br />
        <div class="editor-label">
            @Html.LabelFor(model => model.Applicaiton.Abbreviation, new { @class = "formLabel" }) 
            @Html.TextBoxFor(model => model.Applicaiton.Abbreviation, new { @class = "Application-Abbreviation" })
        </div>
        <br />
        <div class="editor-label">
            @Html.LabelFor(model => model.Applicaiton.Description, new { @class = "formLabel" }) 
            @Html.TextAreaFor(model => model.Applicaiton.Description, new { @class = "Application-Description", rows = 10, cols = 60 })
        </div>
        <br />
        <div class="editor-label">
            @Html.Label("Deployed Date", new { @class = "formLabel" })
            @Html.TextBoxFor(model => model.Applicaiton.DeployedOn, "{0:MM/dd/yyyy}", new { @class = "Application-DeployedOn" })
        </div>
        <div>
            @Html.ValidationMessageFor(model => model.Applicaiton.Name)
            @Html.ValidationMessageFor(model => model.Applicaiton.Abbreviation)
            @Html.ValidationMessageFor(model => model.Applicaiton.Description)
            @Html.ValidationMessageFor(model => model.Applicaiton.DeployedOn)
        </div>
    </div>
}

解决方法 1:

要带裂纹在这,即使我仍然疑惑你的 html 的看起来和这些部分的视图。使用.html()方法在页面加载的你的意见。为实例如果你对上面列出的视图添加id作为您验证 div

<div id="ValidationDiv">
        @Html.ValidationMessageFor(model => model.Applicaiton.Name)
        @Html.ValidationMessageFor(model => model.Applicaiton.Abbreviation)
        @Html.ValidationMessageFor(model => model.Applicaiton.Description)
        @Html.ValidationMessageFor(model => model.Applicaiton.DeployedOn)
 </div>

你要想在所有的视图,其中包含输入的验证 div 上放相同的id 。然后你在页脚区的 _Layout 视图中设置一个空的 div 的 id 作为

<div id="ValidationHolder">

</div>

然后去 bak 投入我们的看法只是一个 Javascript 函数,将 html 复制从ValidationDivValidationHolder

$(document).ready(function() {
    var partialViewDivHtml = $('#ValidationDiv').html();
    var layoutDiv = $($'#ValidationHolder');
    layoutDiv.html(partialVIewDivHtml);
})
官方微信
官方QQ群
31647020