ASP.NET MVC Html.ValidationSummary(真)不显示模型误差 [英] ASP.NET MVC Html.ValidationSummary(true) does not display model errors
问题描述
我有一些问题,Html.ValidationSummary。我不想的ValidationSummary显示属性的错误。而当我设Html.ValidationSummary(真)不显示从ModelState中的错误信息。当有一些异常的控制器行动字符串
MembersManager.RegisterMember(会员);
捕节将错误的ModelState中:
ModelState.AddModelError(错误,ex.Message);
不过的ValidationSummary不显示此错误消息。当我设置Html.ValidationSummary(假)的所有消息都显示,但我不希望显示属性的错误。我怎样才能解决这个问题?
下面是code我使用的是:
型号:
公共类会员
{
[必需(的ErrorMessage =*)]
[显示名称(登录)]
公共字符串登录{搞定;组; } [必需(的ErrorMessage =*)]
[数据类型(DataType.Password)
[显示名称(密码)]
公共字符串密码{搞定;组; } [必需(的ErrorMessage =*)]
[数据类型(DataType.Password)
[显示名称(确认密码)]
公共字符串ConfirmPassword {搞定;组; }
}
控制器:
[HttpPost]
公众的ActionResult注册(注册会员)
{
尝试
{
如果(!ModelState.IsValid)
返回查看(); MembersManager.RegisterMember(会员);
}
赶上(异常前)
{
ModelState.AddModelError(错误,ex.Message); 返回查看(会员);
}
}
查看:
<使用(Html.BeginForm(注册,成员%FormMethod.Post,
新{ENCTYPE =的multipart / form-data的})){%GT;
&所述p为H.;
<%= Html.LabelFor(型号=> model.Login)%GT;
<%= Html.TextBoxFor(型号=> model.Login)%GT;
<%= Html.ValidationMessageFor(型号=> model.Login)%GT;
&所述; / P> &所述p为H.;
<%= Html.LabelFor(型号=> model.Password)%GT;
<%= Html.PasswordFor(型号=> model.Password)%GT;
<%= Html.ValidationMessageFor(型号=> model.Password)%GT;
&所述; / P> &所述p为H.;
<%= Html.LabelFor(型号=> model.ConfirmPassword)%GT;
<%= Html.PasswordFor(型号=> model.ConfirmPassword)%GT;
<%= Html.ValidationMessageFor(型号=> model.ConfirmPassword)%GT;
&所述; / P> < DIV>
<输入类型=提交值=创建/>
< / DIV> <%= Html.ValidationSummary(真)%GT;
<%}%GT;
我相信在ValidationSummary标志的工作方式是将只显示为ModelErrors 的String.Empty
作为键。否则,假设它是一个属性错误。没有验证您提供的字符串/未在模型的属性。
ModelState.AddModelError(的String.Empty,ex.Message);
I have some problem with Html.ValidationSummary. I don't want to display property errors in ValidationSummary. And when I set Html.ValidationSummary(true) it does not display error messages from ModelState. When there is some Exception in controller action on string
MembersManager.RegisterMember(member);
catch section adds an error to the ModelState:
ModelState.AddModelError("error", ex.Message);
But ValidationSummary does not display this error message. When I set Html.ValidationSummary(false) all messages are displaying, but I don't want to display property errors. How can I fix this problem?
Here is the code I'm using:
Model:
public class Member
{
[Required(ErrorMessage = "*")]
[DisplayName("Login:")]
public string Login { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Password:")]
public string Password { get; set; }
[Required(ErrorMessage = "*")]
[DataType(DataType.Password)]
[DisplayName("Confirm Password:")]
public string ConfirmPassword { get; set; }
}
Controller:
[HttpPost]
public ActionResult Register(Member member)
{
try
{
if (!ModelState.IsValid)
return View();
MembersManager.RegisterMember(member);
}
catch (Exception ex)
{
ModelState.AddModelError("error", ex.Message);
return View(member);
}
}
View:
<% using (Html.BeginForm("Register", "Members", FormMethod.Post,
new { enctype = "multipart/form-data" })) {%>
<p>
<%= Html.LabelFor(model => model.Login)%>
<%= Html.TextBoxFor(model => model.Login)%>
<%= Html.ValidationMessageFor(model => model.Login)%>
</p>
<p>
<%= Html.LabelFor(model => model.Password)%>
<%= Html.PasswordFor(model => model.Password)%>
<%= Html.ValidationMessageFor(model => model.Password)%>
</p>
<p>
<%= Html.LabelFor(model => model.ConfirmPassword)%>
<%= Html.PasswordFor(model => model.ConfirmPassword)%>
<%= Html.ValidationMessageFor(model => model.ConfirmPassword)%>
</p>
<div>
<input type="submit" value="Create" />
</div>
<%= Html.ValidationSummary(true)%>
<% } %>
I believe the way the ValidationSummary flag works is it will only display ModelErrors for string.empty
as the key. Otherwise it is assumed it is a property error. There is no validation that the string you provide is/isn't a property on the Model.
ModelState.AddModelError(string.Empty, ex.Message);
这篇关于ASP.NET MVC Html.ValidationSummary(真)不显示模型误差的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!