MVC3学习 七 Razor使用、路由模块、框架自带校验

razor的使用

在razor视图中,可以直接用自带方法判断和转换某个变量的数据类型。如:

@if("123".IsInt()) //判断类型
{
}
@myInt="123".AsInt();  //转换类型

路由模块

路由规则:1、路由可以有多条。2、路由是有先后顺序的。

在添加路由时,一定要将规则越细的放在越上方,因为路由默认从第一条规则开始匹配,如果匹配到了之后,就不在向下匹配,所以,需要将规则最细的放在最上方。

 routes.MapRoute(
              name: "Default2",//作为路由规则的key,一定不能重复
              url: "{controller}-{action}/{id}",//请求后台URL规则
              defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }//,//默认值
                constraints: new { controller=@"^\w+$",id=@"^\d+$"},//约束
                namespaces: new string[] { "MvcRazorDemo.Controllers" }//控制器命名空间的约束

路由还可以添加一些自定义的约束,如正则表达式,控制controller和参数之间的格式。

字段校验

添加校验时,可以直接在类中字段上方直接添加属性,如[Ruquired],在新建的页面时,可以选择页面的功能为哪种类型,比如:create、edit等,

选择之后页面会直接按照添加的属性,直接生成页面,非常方便。另外需要注意的是,验证功能是基础JQuery实现的,也就是说,页面中需要引入

三个JQuery文件,才可以。

代码:

       [DisplayName("内容")]
            [Required(ErrorMessage = "内容不得为空")]
            [DataType("Textarea")]
            [DisplayFormat(ConvertEmptyStringToNull = false)]
            public object Content { get; set; }

在页面中需要引入的文件:

    <script src="../../Scripts/jquery-1.5.1.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.validate.unobtrusive.js" type="text/javascript"></script>

在web.config文件也可以配置所有文件是否启用验证,如果为false,则项目下所有校验的功能失效。

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

也可以在页面中控制单个也是否启用校验功能。

    @{
        Html.EnableClientValidation(false);
    }

上面代码的验证,只是在前台进行验证,如果用户的浏览器禁用了JavaScript脚本,则可能会失效,所以需要在controller再次进行判断,判断也非常方便,代码如下:

         if (ModelState.IsValid) //如果通过验证,则进行更新。
                {
                    BlogArticle cate = db.BlogArticles.Single(x => x.AId == model.AId);
                    cate.ATitle = model.ATitle;
                    cate.ACate = model.ACate;
                    cate.AContent = model.AContent;
                    db.SaveChanges();
                }
                return RedirectToAction("Index", "Home");

 

posted @ 2015-04-03 14:43  8932809  阅读(177)  评论(0编辑  收藏  举报