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设计网络硬盘之删除文件夹实现代码
- 身份验证 – 如何为Asp.NET MVC 5创建ClaimsIdentity对象?
- asp.net – 比较Razor vs ASPX语法
- asp.net – 如果启用ASP .Net请求验证,是否需要HtmlEncode
- asp.net – 为什么我应该使用N层方法当使用SqlDatasource时
- 为什么这么多ASP.NET开发服务器实例?
- asp.net-mvc – 以mvc形式发布数组
- asp.net – 通过javascript禁止文本框中的退格
- asp.net-mvc – 确定是否在布局页面中调用了RenderSection(
- asp.net-mvc – AspNet上的Kestrel vNext不提供索引页/
- asp.net-mvc-4 – MVC4不要在重定向上使用主布局
- asp.net – 如何从RouteData获取路由名称?
- asp.net-mvc – 如何将ViewData传递给HandleErro
- asp.net-mvc – 在IIS Express中测试SignalR应用
- asp.net-mvc-3 – ASP.NET MVC 3,RavenDB和Autof
- asp.net – 如何停止调用500错误页面创建的500 .
- 什么是IIS和Asp.Net中的应用程序池?
- asp.net – 我希望从代码中获取属性值
- asp.net-mvc – ASP.NET MVC 5模型绑定编辑视图
- 在ASP.NET MVC4中是否可以将C#或VB函数标记为Jav
