|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。<p>这里我们将先容ASP.NETMVC数据考证完成的一个特别办法,包含数据的考证,考证后数据的提交等等。51CTO编纂保举《ASP.NETMVC框架视频教程》。
关于ASP.NETMVC数据考证,用起来很出格,由于MS的封装,令人了解起来很隐晦。也大概良多人都在ScottGuthrie等人写的一本《ASP.NETMVC1.0》书中,见过NerdDinner项目中对Dinner工具修正和增加的时的数据考证。但有很多封装的中央,不晓得是如何的事情道理,明天研讨了,拿出来给人人分享一下。
数据库仍是上一篇blog中的库与表,一样的办法来创立news表的实体类,在主动天生的news这个实体类中,我们发明有一个特别的分部办法:
<OLclass=dp-c>partialvoidOnValidate(System.Data.Linq.ChangeActionaction);
这个办法没有完成,我们依据C#的语法晓得,假如分部类中的分部办法,没有完成的话,挪用和定议的中央都不会起甚么感化。如今,我们要往完美这个办法,让它“用”起来。
起首,人产在Models中创立news类的另外一部分,代码以下:
<OLclass=dp-xml>publicpartialclassnews{partialvoidOnValidate(System.Data.Linq.ChangeActionaction){if(!IsValid){thrownewApplicationException("考证内容项堕落!");}}publicboolIsValid{get{return(GetRuleViolations().Count()==0);}}publicIEnumerableGetRuleViolations(){if(String.IsNullOrEmpty(this.title.Trim()))yieldreturnnewRuleViolation("标题步能为空!","标题");if(String.IsNullOrEmpty(this.contents.Trim()))yieldreturnnewRuleViolation("内容不克不及为空!","内容");yieldbreak;}}//////划定规矩信息类///publicclassRuleViolation{publicstringErrorMessage{get;privateset;}publicstringPropertyName{get;privateset;}publicRuleViolation(stringerrorMessage){ErrorMessage=errorMessage;}publicRuleViolation(stringerrorMessage,stringpropertyName){ErrorMessage=errorMessage;PropertyName=propertyName;}}
在这里给出这么多代码,实际上是提早有计划的,由于从营业角度思索,还不该该写这部分代码。RuleViolation类很复杂,就是一个包含了两个属性的类(这个类的布局计划是依据前面的ModelState.AddModelError主法来计划的)。
在news分部类中,有一个IsValid的属性,这个属性是bool范例的,前往值取决于GetRuleViolations这个办法,这个办法前往值是一个IEnumerable范例的,IEnumerable是经由过程news的几个属性是不是为空来天生跌代的。假如title或contents为Null或””,就前往跌代。实在真实的用户数据的考证就是在这里完成,用户的数据的对与错,就是一个逻辑,只需用户数据不切合划定规矩,就能够 “yieldreturnnewRuleViolation("毛病标识","毛病提醒信息!")”;这里的毛病码提醒信息是显现到客户真个,以是要处置密友好的提醒。
如今考证用户数据,天生毛病列表的事情都做完了,但关头是怎样能让用户提交数据时,挪用OnValidate。这个成绩,先放一下,请记着,下面的代码,只需在用户提交数据时,挪用OnValidate,如许就可以失掉毛病汇合。
如今,让我们来处置Cotroller和View层,在Cotroller层,起首来增加index这个Action,代码以下:
<divclass="code"><OLclass=dp-c>publicActionResultIndex(){&我有个同学,他是搞Java的,他给我说“Java不是效率低,而是速度慢。”,我不是搞Java的,我实在想不透这句话的含义,难道执行速度不就是效率低吗?难道执行速度慢还成效率高了? |
|