如下所示: input type="text" value="BOGUS" / 你可以定制CSS错误类的样式
标签:
ModelState的内容何时被改削:模型绑按时; 每一个值在模型状态中都有相应的一笔记录。可以随时检察绑定状态
MVC控制器中语句赋值,例如 ModelState.AddModelError("Password","暗码错误");
ModelState的属性
Errors :返回一个 ModelErrorCollection 东西,该东西包罗在模型绑按期间产生的所以错误【绑定后验证,所以错误】
Value:返回一个 ValueProviderResult 东西,该东西封装在模型绑按期间绑定的值。例如模型错误,从头回到输入界面时本来输入的值会显示
错误有模型级和属性级:
ModelState.IsValid ModelState.IsValidField("Name") Html 帮助要领和ModelState集成HTML 帮助要领,如Html.TextBox(),在输出内容时,会查抄ModelState调集。如果发明该属性有异常或错误,,将泛起用户输入的内容和CSS错误类。
例如,在Edit视图中,我们使用Html.TextBox() 帮助要领泛起Dinner东西的EventDate属性:
<%= Html.TextBox("EventDate", String.Format("{0:g}", Model.EventDate)) %>
当有错的时候泛起视图时,Html.TextBox() 要领查抄ModelState调集,查抄是否有错误关联到Dinner 东西的EventDate属性。当发明有错误时,将显示用户提交的”EntLib” 输入作为参数值,同时对<input type=”textbox” />元素添加CSS 错误类,如下所示:
<input
type="text" value="BOGUS" />
你可以定制CSS错误类的样式。默认的CSS错误类 – input-validation-error界说在\content\site.css 文件中,样式界说如下:
.input-validation-error { border: 1px solid #ff0000; }
Html.ValidationMessage() 帮助要领
Html.ValidationMessage() 帮助要领用来输出特定Model属性相关的ModelState错误信息:
<%= Html.ValidationMessage("EventDate") %>
上述代码输出:
<span class=”field-validation-error”> The value ‘EntLib’ is invalid</span>
Html.ValidationMessage() 帮助要领也撑持第二个参数,允许开发人员笼罩错误动静:
<%= Html.ValidationMessage("EventDate", "*") %>
上述代码输出:
<span class=”field-validation-error”> *</span>,而不是默认的错误信息。
Html.ValidationSummary() 帮助要领
Html.ValidationSummary() 帮助要领将泛起总结的错误动静,通过<ul><li/></ul>元素列出在ModelState调集中所有详细的错误动静
Html.ValidationSummary() 帮助要领接收一个可选的字符串参数 – 界说一个归纳综合性的错误动静,并显示在所有详细错误信息的前面:
<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>
你也可以界说CSS设置错误动静的样式。
使用AddRuleViolations帮助要领
初始的HTTP-POST Edit的实现要领使用了一个foreach循环语句,遍历Dinner东西的Rule Violations,并添加到controller的ModelState调集:
catch { foreach (var issue in dinner.GetRuleViolations()) { ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage); } return View(dinner); }
为了使代码更简洁一点,我们添加ControllerHelpers类到NerdDinner项目中,并实现了AddRuleViolations扩展要领,添加了一个对ASP.NET MVC ModelStateDictionary 类的帮助要领。该扩展要领封装了使用RuleViolation 错误信息填充ModelStateDictionary 调集类的逻辑:
public static class ControllerHelpers { public static void AddRuleViolations(this ModelStateDictionary modelState,IEnumerable<RuleViolation> errors) { foreach (RuleViolation issue in errors) { modelState.AddModelError(issue.PropertyName, issue.ErrorMessage); } } }
接下来,我们更新HTTP-POST Edit要领,使用上述扩展要领实现Dinner的Rule Violations填充ModelState调集。
完成Edit Action要领的实现
下面的代码实现了控制器中Edit的所有逻辑:
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/29999.html