MVC 路由
1. 特性验证。
//[Required]
//[StringLength(5,MinimumLength=2)]
//[Range(typeof(string),"a","z")]
//[StringLength(5, MinimumLength = 2)]
//[Range(3, 20)]
//OutputCache特性 相当于aspx的整页缓存,默认为绝对过期时间
//[OutputCache(Duration=20,VaryByParam="id")]
//[ValidateInput(false)]//关闭请求报文中危险标签字符验证
2. 自定义验证特性类(自定义数据注解)。
3. 服务端验证(1,2都属于浏览器端的验证)
[HttpPost]
public ActionResult Add(Models.Student model)
{
if (!ModelState.IsValid)
{
return Content("验证未通过!");
}
return null;
}
4. 绝对过期时间和滑动过期时间。
5. 比较校验和远程校验。
//[Compare("CID")]//用来和CID属性的值进行比较验证
//[Remote("IsSame","Home")]//用来远程ajax请求 /Home/IsSame/Name=123的方法,会自动根据方法返回值(bool)判断是否通过验证
6. 合并js或css请求。
//合并js文件
bundles.Add(new ScriptBundle("~/jsVlidate")
.Include("~/Scripts/jquery-1.7.1.min.js")
.Include("~/Scripts/jquery.validate.min.js")
.Include("~/Scripts/jquery.validate.unobtrusive.min.js")
);
//合并css文件
bundles.Add(new StyleBundle("~/cssMty")
.Include("~/Content/1.css")
.Include("~/Content/2.css")
);
//开启 js/css 压缩合并功能
BundleTable.EnableOptimizations = true;
@Styles.Render("~/cssMty")
@Scripts.Render("~/jsVlidate")
7. MVC的异步请求方式(必须开启非侵入式Ajax)
必须引入js文件:<script type="text/javascript" src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
@Ajax.ActionLink("我要去广州小蛮腰", "XiaoMan", new AjaxOptions() {
HttpMethod="post", UpdateTargetId="contDiv", InsertionMode = InsertionMode.Replace
})
<div id="contDiv" style="border:1px solid #0094ff; width:400px;">你有钱吗?</div>
<h1>异步表单:</h1>
@using (Ajax.BeginForm("GetDate", "Home", new AjaxOptions()
{
HttpMethod = "post",
OnSuccess = "suc",
OnFailure="err",
LoadingElementId = "imgLoad"
})) {
<input type="text" name="txtName" />
<input type="submit" />
<div id="imgLoad">加载中~~~</div>
}
8. 路由检测组件 – RouteDebug的使用
在Web.config配置文件里<appSetting>添加
<add key=”RouteDebugger:Enable” value=”true” />
9. 其他匹配方式(路由的URL语法)
Localhost:13661/home-index-a
Localhost:13661/home.index.a
Localhost:13661/home.index-a
…
10. 路由约束
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
constraints: new {id =@"\d*"}
);
11. 生成指定路由的url超链接
@Html.RouteLink(“test”,”Default”,
new { controller=”home”,action=”index”,id=1});
会根据找到的路由规则生成超链接。
12. MVC验证码
public class HelperController : Controller
{
/// <summary>
/// 生成验证码
/// </summary>
/// <returns></returns>
public ActionResult VCode()
{
Helper.VCode v = new Helper.VCode();
byte[] arrImg = v.GetVCode();
return File(arrImg,"image/jpge");
}
}
13. MVC中可以使用一般处理程序。
14. MVC和WebForm比较,面试回答注意。
15. 区域。
(1)尝试将区域注册类放到另一个程序集中。(根据命名空间和程序集遍历,便于分类模块,有利于类的规范。)
(2)将区域控制器放到外面程序集。
(3)当用户访问视图的时候,可以设置只访问html(不访问aspxhtmml,vbhtml)的网页,来进行优化,减轻服务器的负担。
(4)DI依赖注入。
16. MVC项目框架搭建(多个控制器共享同一个视图,真正的控制器与视图分离)
17. 面向切面编程。