Javascript 将MVC ValidationMessageFor添加到单独的Div标记
有没有办法将所有@Html.ValidationMessageFor块添加到MVC parent\u layout.cshtml页面页脚中的div容器中?下面的代码显示了底部div中的验证消息,但我希望使用jQuery将它们显示在_Layout.cshtml div的页脚中Javascript 将MVC ValidationMessageFor添加到单独的Div标记,javascript,jquery,html,css,asp.net-mvc,Javascript,Jquery,Html,Css,Asp.net Mvc,有没有办法将所有@Html.ValidationMessageFor块添加到MVC parent\u layout.cshtml页面页脚中的div容器中?下面的代码显示了底部div中的验证消息,但我希望使用jQuery将它们显示在_Layout.cshtml div的页脚中 @model Proj.ViewModels.ApplicationControllerViewModel @Html.ValidationSummary(true) @using (Html.BeginForm(null
@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>
}
@model Proj.ViewModels.ApplicationControllerViewModel
@Html.ValidationSummary(true)
@使用(Html.BeginForm(null,null,FormMethod.Post,new{id=“Details”}))
{
@LabelFor(model=>model.applicationon.Name,新的{@class=“formLabel”})
@Html.HiddenFor(model=>model.applicationon.ID,新的{@class=“Application ID”})
@TextBoxFor(model=>model.applicationon.Name,新的{@class=“Application Name”})
@Html.LabelFor(model=>model.ControllerList,新的{@class=“formLabel”})
@DropDownList(“ControllerList”,Model.ControllerList,new{@class=“Application ControllerList”})
@Html.LabelFor(model=>model.applicationon.缩写,新的{@class=“formLabel”})
@Html.TextBoxFor(model=>model.applicationon.缩写,新的{@class=“Application缩写”})
@Html.LabelFor(model=>model.applicationon.Description,新的{@class=“formLabel”})
@TextAreaFor(model=>model.applicationon.Description,new{@class=“Application Description”,rows=10,cols=60})
@Label(“部署日期”,新的{@class=“formLabel”})
@Html.TextBoxFor(model=>model.applicationon.DeployedOn,“{0:MM/dd/yyyy}”,new{@class=“Application DeployedOn”})
@Html.ValidationMessageFor(model=>model.applicationon.Name)
@Html.ValidationMessageFor(model=>model.application.缩写)
@Html.ValidationMessageFor(model=>model.applicationon.Description)
@Html.ValidationMessageFor(model=>model.applicationon.DeployedOn)
}
尽管我仍然对html的外观和这些局部视图感到困惑,但我还是要尝试一下。对视图的页面加载使用.html()方法。例如,如果您在上面列出的视图中,请在验证div中添加一个id,如下所示:
<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>
我将使用内置功能在
\u Layout.cshtml
中使用@RenderSection
来实现这一点:
\u Layout.cshtml(例如简化版)
@视图包。标题
@RenderBody()
@RenderSection(“ValidationMessages”,false)
查看
@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>
}
@section ValidationMessages {
@Html.ValidationMessageFor(model => model.Applicaiton.Name)
@Html.ValidationMessageFor(model => model.Applicaiton.Abbreviation)
@Html.ValidationMessageFor(model => model.Applicaiton.Description)
@Html.ValidationMessageFor(model => model.Applicaiton.DeployedOn)
}
@model Proj.ViewModels.ApplicationControllerViewModel
@Html.ValidationSummary(true)
@使用(Html.BeginForm(null,null,FormMethod.Post,new{id=“Details”}))
{
@LabelFor(model=>model.applicationon.Name,新的{@class=“formLabel”})
@Html.HiddenFor(model=>model.applicationon.ID,新的{@class=“Application ID”})
@TextBoxFor(model=>model.applicationon.Name,新的{@class=“Application Name”})
@Html.LabelFor(model=>model.ControllerList,新的{@class=“formLabel”})
@DropDownList(“ControllerList”,Model.ControllerList,new{@class=“Application ControllerList”})
@Html.LabelFor(model=>model.applicationon.缩写,新的{@class=“formLabel”})
@Html.TextBoxFor(model=>model.applicationon.缩写,新的{@class=“Application缩写”})
@Html.LabelFor(model=>model.applicationon.Description,新的{@class=“formLabel”})
@TextAreaFor(model=>model.applicationon.Description,new{@class=“Application Description”,rows=10,cols=60})
@Label(“部署日期”,新的{@class=“formLabel”})
@Html.TextBoxFor(model=>model.applicationon.DeployedOn,“{0:MM/dd/yyyy}”,new{@class=“Application DeployedOn”})
}
@部分验证消息{
@Html.ValidationMessageFor(model=>model.applicationon.Name)
@Html.ValidationMessageFor(model=>model.application.缩写)
@Html.ValidationMessageFor(model=>model.applicationon.Description)
@Html.ValidationMessageFor(model=>model.applicationon.DeployedOn)
}
为什么不将带有验证消息的div放在_布局页面上?只要启用了验证,它就会自动填充验证消息。我们可能会有数百个包含验证消息的.cshtml局部视图。我相信ValidationMessageFor标记必须包含正在验证的模型组件。(即..model=>model.applicationon.Name)位于部分视图中。验证工作正常。我想要一种在footer div中显示消息的方法,而不是在表单块中。好的,那么您想要在_布局页面的页脚中显示消息,而不是在表单块中。谢谢,这就是我想要的。
$(document).ready(function() {
var partialViewDivHtml = $('#ValidationDiv').html();
var layoutDiv = $($'#ValidationHolder');
layoutDiv.html(partialVIewDivHtml);
})
<!DOCTYPE html>
<html>
<head>
<title>@ViewBag.Title</title>
</head>
<body>
<div id="content">
@RenderBody()
</div>
<div>
@RenderSection("ValidationMessages", false)
</div>
</body>
</html>
@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>
}
@section ValidationMessages {
@Html.ValidationMessageFor(model => model.Applicaiton.Name)
@Html.ValidationMessageFor(model => model.Applicaiton.Abbreviation)
@Html.ValidationMessageFor(model => model.Applicaiton.Description)
@Html.ValidationMessageFor(model => model.Applicaiton.DeployedOn)
}