asp.net-mvc – MVC4表单输入验证 – 自定义错误范围
发布时间:2020-12-16 06:48:43 所属栏目:asp.Net 来源:网络整理
导读:我有一个使用 Html.TextBoxFor的几个输入的表单,每个输入都有一个ValidationMessageFor,它从ViewModel属性获取它的错误消息.对于这个例子,我们假装只有一个输入: @Html.TextBoxFor(x = x.Code)@Html.ValidationMessageFor(x = x.Code) 当出现模型错误时,验
我有一个使用
Html.TextBoxFor的几个输入的表单,每个输入都有一个ValidationMessageFor,它从ViewModel属性获取它的错误消息.对于这个例子,我们假装只有一个输入:
@Html.TextBoxFor(x => x.Code) @Html.ValidationMessageFor(x => x.Code) 当出现模型错误时,验证器会在几个跨度内显示它的错误消息,如下所示: <input type="text" value="" name="Code" id="Code" data-val-required="Personalised code is required" data-val="true" class="input-validation-error"> <span data-valmsg-replace="true" data-valmsg-for="Code" class="field-validation-error"> <span for="Code" generated="true" class="">Personalised code is required</span> </span> 如何自定义此错误消息? 例如,将外跨度更改为div并同时给出div和span clases? <div class="myOuterSpan" data-valmsg-replace="true" data-valmsg-for="Code" class="field-validation-error"> <span class="myInnerSpan" for="Code" generated="true" class="">Personalised code is required</span> </div> 或者只有一个跨度? <span class="errorWrapper" for="Code" generated="true">Code is required</span> 或者将整个地块包裹在div中? <div class="myOuterDiv"> <span data-valmsg-replace="true" data-valmsg-for="Code" class="field-validation-error"> <span for="Code" generated="true" class="">Personalised code is required</span> </span> </div> 你明白了…… 解决方案 我的解决方案基于Darin的答案并创建了一个CustomValidationMessage,而不是我最初打算创建的customValidationMessageFOR. CONTROLLER ModelState.AddModelError("Code","Invalid Code"); 视图 @Html.CustomValidationMessage("Code") 延期 public static class Extensions { public static MvcHtmlString CustomValidationMessage(this HtmlHelper htmlHelper,string modelName) { var modelState = htmlHelper.ViewData.ModelState[modelName]; var modelErrors = modelState == null ? null : modelState.Errors; var modelError = ((modelErrors == null) || (modelErrors.Count == 0)) ? null : modelErrors.FirstOrDefault(e => !string.IsNullOrEmpty(e.ErrorMessage)) ?? modelErrors[0]; if (modelError != null) { return MvcHtmlString.Create("<span class='validation_wrapper customValidation'><span>" + modelError.ErrorMessage +"</span></span>"); } return new MvcHtmlString(string.Empty); } } 解决方法
无法修改ValidationMessageFor帮助程序生成的标记.如果你想这样做,你将不得不写一个自定义助手.以下是此帮助程序的签名可能如下所示:
public static MvcHtmlString CustomValidationMessageFor<TModel,TProperty>( this HtmlHelper<TModel> htmlHelper,Expression<Func<TModel,TProperty>> expression ) { ... } 您也可以结账 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 获取特定的会员提供商
- asp.net-mvc – 使用AutoMapper的控制器上的单元测试
- asp.net – 从Controller构造器访问Request.Cookies
- asp.net-mvc – 在Web Api 2中更改IdentityUser表的模式
- asp.net-mvc – 自定义控制器工厂,依赖注入/结构图问题与AS
- asp.net – 客户端缓存vs Cookie
- asp.net-mvc-3 – 为mvc创建一个html帮助器
- asp.net – 继承.aspx页面?
- IIS 7.5上的.Net 4.5 WCF错误404.3
- asp.net – 使用HttpHandler和IIS 5.1在iPhone上播放Quickt
推荐文章
站长推荐
热点阅读