我正在与Asp.Net MVC3合作一个项目
在视图中,我有@Html.ValidationSummary(true)
,通常它会生成
<div class="validation-summary-errors">
<ul>
<li>Something bad Happened!</li>
</ul>
</div>
如何将此ValidationSummary扩展到MyValidationSummary并生成类似以下内容的Html Code模板:
<div class="notification warning">
<span></span>
<div class="text"> <p>Something bad Happened!</p> </div>
</div>
发布于 2011-12-16 20:43:43
我的方法是使用自定义的ValidationSummary.cshtml
@model ModelStateDictionary
@if(!Model.IsValid)
{
<div class="validation-summary-errors">
<ul>
@foreach (var modelError in
Model.SelectMany(keyValuePair => keyValuePair.Value.Errors))
{
<li>@modelError.ErrorMessage</li>
}
</ul>
</div>
}
将此部分视图放在您的共享文件夹中,并从代码中引用它:
@Html.Partial("_ValidationSummary", ViewData.ModelState);
这样你就可以完全控制你的html了。
发布于 2013-08-30 07:15:35
在flos's answer的基础上,我使其与微软的jQuery非侵入性验证兼容,并添加了Bootstrap的3个面板样式。这是新的代码:
@model ModelStateDictionary
<div class="@(Html.ViewData.ModelState.IsValid ? "validation-summary-valid" : "validation-summary-errors") panel panel-danger"
data-valmsg-summary="true">
<div class="panel-heading">
Please, correct the following errors:
</div>
<div class="panel-body">
<ul>
@foreach(var modelError in Model.SelectMany(keyValuePair => keyValuePair.Value.Errors))
{
<li>@modelError.ErrorMessage</li>
}
</ul>
</div>
</div>
你可以在这里阅读它的全部细节:
Creating a custom ASP.NET MVC @Html.ValidationSummary styled with Bootstrap 3 panel
我还创建了一个样例ASP.NET MVC项目来实际展示这个自定义的ValidationSummary。在这里获取它:
https://github.com/leniel/AspNetMvcCustomHtmlValidationSummary
发布于 2014-03-12 20:51:46
我只是在这里发布我的答案,因为它对我来说效果很好;)
我使用了一个简单的扩展方法,它接受一个MvcHtmlString
并将其解码回HTML:
public static MvcHtmlString ToMvcHtmlString(this MvcHtmlString htmlString)
{
if (htmlString != null)
{
return new MvcHtmlString(HttpUtility.HtmlDecode(htmlString.ToString()));
}
return null;
}
为了深入了解这一点,我将验证摘要帮助程序添加到我的chstml中,如下所示:
@Html.ValidationSummary(true).ToMvcHtmlString()
这意味着,我可以将自定义HTML添加到我的验证摘要中:
ModelState.AddModelError("", "<p>This message can have html in it</p>");
我甚至可以在我的字段验证消息中添加自定义HTML:
ModelState.AddModelError("MyField", "<p>This message can have html in it</p>");
要让我的字段验证消息与HTML一起工作:
@Html.ValidationMessageFor(model => model.MyField).ToMvcHtmlString();
https://stackoverflow.com/questions/5857851
复制相似问题