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");