Asp.Net Mvc之模型注解

正文:

     命名空间:

     using System.ComponentModel;
     using System.ComponentModel.DataAnnotations;

     在实体对象的属性上贴上相对应的特性标签(本质是通过反射得到特性标签的类实例,再进行相对应的业务逻辑处理判断),由于通过EntityFrameWork生成的xx.tt模板每次生成操作之后都会覆盖掉原有的修改,所以使用以下方法来对类对象贴上特性标签而且也保证不会被模板覆盖:

     新建一个类(这里叫StudentView)

    

     新建一个partial的Student类,这里的Student.cs的命名空间要和xx.tt模板的Student类的命名空间保持一致:

     

     下图是xx.tt模板的Student类文件:

     

      Note:在using System.ComponentModel.DataAnnotations;下有很多个特性标签可以使用;

     上图在System.Web.Mvc命名空间下的Remote特性标签作用是发Ajax请求到指定路径判断返回一个string确定是"true"还是"false",注意使用提交方式为post,使用get会有缓存的影响;

   

     接下来配合一系列由HtmlHelper提供的帮助方法实现展示:比如下图写法

    

     使用强类型:

    

       在上图中,@Html.DropDownListFor()中使用了两个ViewBag的传值:

    

       getSetInfo()和getClassInfo()的内容就是注释的内容;

       除此之外,还需要添加非嵌入式脚本的引用,这里我加到了ViewStart.cshtml文件下(此文件会在每个view的最上方渲染)

      

      Note:在webconfig文件下的appSettings需要注意两个子节点的配置

       

       需要打开非嵌入脚本和客户端检测的开关(true),默认是true.

     一般情况下在客户端检查合法性之外,在后台也需要再次检测:

    

        ModelState.AddModelError()的错误信息会在@Html.ValidationSummary()显示.

     

 

       补充一下关于View()的东西:

   

       可以根据全路径返回视图.

       在页面接收一个集合使用IEnumerable<T>强类型:

      

      

 

    

 

 

    

posted on 2015-09-07 14:02  巴夫巴夫  阅读(420)  评论(0编辑  收藏  举报