asp.net MVC – ValidationSummary不显示
我有一个奇怪的问题,其中ValidationSummary没有显示.但是,正在显示ValidationMessage.我已经检查了输出页面的源代码,并不像它们的颜色那样模糊.我正在使用RC.有任何想法吗?
编辑: ViewData.ModelState.Values[1].ErrorMessage = "" ViewData.ModelState.Values[1].Exception.InnerException.Message = "4a is not a valid value for Int32" ValidationSummary是否使用ErrorMessage和ValidationMessage使用InnerException.Message? 我的查看代码是: <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<App.Models.PurchaSEOrdersView>" %> <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> <title>Edit</title> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <h2>Edit</h2> <%= Html.ValidationSummary() %> <% Html.BeginForm("Edit","PurchaSEOrder",FormMethod.Post); %> <table> <tr> <td> Purchase Order Id: </td> <td> <%= Html.TextBox("PurchaSEOrderId",Model.PurchaSEOrderId)%> <%= Html.ValidationMessage("PurchaSEOrderId")%> </td> </tr> <tr> <td> Date: </td> <td> <%= Html.TextBox("Date",Model.Date.ToString("dd-MMM-yyyy"))%> <%= Html.ValidationMessage("Date")%> </td> </tr> </table> <input type="submit" value="Save" /> <% Html.EndForm(); %> </asp:Content> 解决方法
你不说什么错误是不显示,但有一些错误将显示在ValidationMessage,但不在ValidationSummary.我认为这是发布候选人的错误,但我对其他解释开放.特别是从ValidationSummary的源代码考虑这一行:
string errorText = GetUserErrorMessageOrDefault(modelError,null /* modelState */); 请注意,对于modelState没有传递任何内容.现在与ValidationMessage对比: ... GetUserErrorMessageOrDefault(modelError,modelState) ... 最后,我们来看看GetUserErrorMessageOrDefault: private static string GetUserErrorMessageOrDefault(ModelError error,ModelState modelState) { if (!String.IsNullOrEmpty(error.ErrorMessage)) { return error.ErrorMessage; } if (modelState == null) { return null; } string attemptedValue = (modelState.Value != null) ? modelState.Value.AttemptedValue : null; return String.Format(CultureInfo.CurrentCulture,MvcResources.Common_ValueNotValidForProperty,attemptedValue); } 这告诉我们,如果在向模型状态添加错误时指定自定义错误消息,将显示它.但是,如果添加了一个异常(对于接受异常的AddModelError有一个重载,另一个重载异常,另一个重载一个字符串;实现IDataErrorInfo就像字符串大小写一样),而不是一个字符串错误消息,只有在modelState为非空,然后我们给你一个通用消息,而不是异常的错误消息. 更新
是的,这或多或少的效果.就像我说的,我觉得这是一个bug. UPDATE2 Microsoft更新了GetUserErrorMessageOrDefault函数,如here所示. private static string GetUserErrorMessageOrDefault(HttpContextBase httpContext,ModelError error,ModelState modelState) { if (!String.IsNullOrEmpty(error.ErrorMessage)) { return error.ErrorMessage; } if (modelState == null) { return null; } string attemptedValue = (modelState.Value != null) ? modelState.Value.AttemptedValue : null; return String.Format(CultureInfo.CurrentCulture,GetInvalidPropertyValueResource(httpContext),attemptedValue); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 如何从MVC 6中的ASP.Net 5 Tag Helper访问
- 数据绑定 – Asp.Net核心模型绑定,如何将空字段绑定为空字符
- asp.net-mvc – 十进制的最佳数据注释(18,2)
- asp.net-mvc – 使用LINQ的多个或单个存储库
- asp.net-mvc – 使用自定义段变量设置ASP.Net MVC 4路由
- 如何在ASP.NET网站中解决长时间的Glimpse线路时间问题?
- asp.net-mvc – ASP.NET MVC中的AntiForgeryToken是否防止所
- 如何在没有冲突的情况下在asp.net中生成随机唯一的16位数字
- asp.net-mvc – AuthenticationManager.SignIn与Authentica
- asp.net-mvc – 在ASP.Net MVC中寻找转发器类型功能
- 如何自定义Asp.net Identity 2用户名已经采取验证
- asp.net-mvc – 在什么级别可以使用SPDY?
- asp.net-web-api – ASP.NET Web API – 404删除
- asp.net-mvc-2 – Asp.Net MVC DropDownList数据
- asp.net mvc 简易通用自定义Pager实现分页
- asp.net-mvc – 覆盖默认身份表名称
- asp.net-mvc – “继承”ASP.NET MVC网站从一个常
- asp.net – NPOI – 从模板文件创建的保存工作簿
- 如何知道asp.net 3.5 sp1和asp.net mvc是否安装在
- 使用SQLite做本地数据缓存的思考