当前位置:首页 > Web开发 > 正文

如下所示: input type="text" value="BOGUS" / 你可以定制CSS错误类的样式

2024-03-31 Web开发

标签:

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