asp.net-mvc – 验证消息中的换行符
发布时间:2020-12-15 19:26:39 所属栏目:asp.Net 来源:网络整理
导读:我正在测试一个事情的列表为null.每次找到一个,我将它保存在一个数组中,以便在一个验证消息中实现它. 输出我想看起来像这样: 字段1是必需的 需要领域4 等等… 但我似乎无法开始一条新线. 现在,看起来像这样: 字段1是必需的字段4是必需的 有人知道如何实现
我正在测试一个事情的列表为null.每次找到一个,我将它保存在一个数组中,以便在一个验证消息中实现它.
输出我想看起来像这样: 字段1是必需的 但我似乎无法开始一条新线. 现在,看起来像这样: 字段1是必需的字段4是必需的 有人知道如何实现这一点吗? 编辑: 控制器: IDictionary<int,String> emptyFields = new Dictionary<int,String>(); foreach (Something thing in AnotherThing.Collection) { if (thing.Property == null) emptyFields.add(thing.Index,thing.Name); } if (emptyFields.Any()) throw new CustomException() { EmptyFields = emptyFields }; 此异常在此处理: catch (CustomException ex) { ModelState.AddModelError("file",ex.GetExceptionString()); return View("theView"); } CustomException: public class CustomException: Exception { public IDictionary<int,String> EmptyFields { get; set; } public override String Label { get { return "someLabel"; } } public override String GetExceptionString() { String msg = ""; foreach (KeyValuePair<int,String> elem in EmptyFields) { msg += "row: " + (elem.Key + 1).ToString() + " column: " + elem.Value + "<br/>"; } return msg; } } 视图: <span style="color: #FF0000">@Html.Raw(Html.ValidationMessage("file").ToString())</span> 解决方法
您将需要编写一个自定义帮助器来实现.内置的ValidationMessageFor帮助器自动将HTML编码为值.这里有一个例子:
public static class ValidationMessageExtensions { public static IHtmlString MyValidationMessageFor<TModel,TProperty>( this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TProperty>> ex ) { var htmlAttributes = new RouteValueDictionary(); string validationMessage = null; var expression = ExpressionHelper.GetExpressionText(ex); var modelName = htmlHelper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(expression); var formContext = htmlHelper.ViewContext.ClientValidationEnabled ? htmlHelper.ViewContext.FormContext : null; if (!htmlHelper.ViewData.ModelState.ContainsKey(modelName) && formContext == null) { return null; } var modelState = htmlHelper.ViewData.ModelState[modelName]; var modelErrors = (modelState == null) ? null : modelState.Errors; var modelError = (((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors.FirstOrDefault(m => !String.IsNullOrEmpty(m.ErrorMessage)) ?? modelErrors[0]); if (modelError == null && formContext == null) { return null; } var builder = new TagBuilder("span"); builder.MergeAttributes(htmlAttributes); builder.AddCssClass((modelError != null) ? HtmlHelper.ValidationMessageCssClassName : HtmlHelper.ValidationMessageValidCssClassName); if (!String.IsNullOrEmpty(validationMessage)) { builder.InnerHtml = validationMessage; } else if (modelError != null) { builder.InnerHtml = GetUserErrorMessageOrDefault(htmlHelper.ViewContext.HttpContext,modelError,modelState); } if (formContext != null) { bool replaceValidationMessageContents = String.IsNullOrEmpty(validationMessage); builder.MergeAttribute("data-valmsg-for",modelName); builder.MergeAttribute("data-valmsg-replace",replaceValidationMessageContents.ToString().ToLowerInvariant()); } return new HtmlString(builder.ToString(TagRenderMode.Normal)); } private static string GetUserErrorMessageOrDefault(HttpContextBase httpContext,ModelError error,ModelState modelState) { if (!String.IsNullOrEmpty(error.ErrorMessage)) { return error.ErrorMessage; } if (modelState == null) { return null; } var attemptedValue = (modelState.Value != null) ? modelState.Value.AttemptedValue : null; return string.Format(CultureInfo.CurrentCulture,"Value '{0}' not valid for property",attemptedValue); } } 接着: public class MyViewModel { [Required(ErrorMessage = "Error Line1<br/>Error Line2")] public string SomeProperty { get; set; } } 并认为: @model MyViewModel @using (Html.BeginForm()) { @Html.EditorFor(x => x.SomeProperty) @Html.MyValidationMessageFor(x => x.SomeProperty) <button type="submit">OK</button> } 如果要在ValidationSummary中显示错误消息,您还可以编写一个自定义帮助器,不会像 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在Html.TextBox帮助器中设置一个css类?
- .net – 强制ActionLinks呈现为小写
- asp.net-mvc – 我可以免费在ASP.NET MVC上开发吗?
- asp.net – MVC EF Code首先一对一的关系错误
- asp.net-mvc – 在MVC项目中放置一个简单的类?
- 我的asp.net应用程序需要“IIS元数据库和IIS 6配置兼容性”
- asp.net – 如何强制netwtonsoft json序列化程序序列化date
- asp.net-mvc在post action中获取字典或如何将FormCollectio
- asp.net-mvc – 如何对我的ASP.NET MVC网站进行性能测试?
- 通过asp.net网页进行Web服务器监控
推荐文章
站长推荐
- asp.net – Text 4.5中的文本.NET 4.5中的Time属
- OWIN如何挂钩ASP.NET启动
- asp.net – 版本16.1.1.0中不提供AjaxControlToo
- asp.net-mvc-2 – 将区域限制为给定角色
- asp.net-mvc-3 – 避免服务器端Razor视图和客户端
- asp.net-mvc-2 – 为什么mvc Html.HiddenFor不渲
- asp.net – Outputcache:VaryByHeader =“User-
- asp.net-mvc – 带数据注释的KendoUI网格默认值
- 使用Openiddict的ASP.NET Core 1.0 OAuth服务器
- asp.net-mvc – 获取Route,ASP.net MVC中的当前片
热点阅读