一。 Model
1.1 在ASP.NET MVC 中 model 负责的是所有与 "数据“ 相关的的任务。
也可以把Model 看成是 ASP.NET 中三层模式的 BLL层 加 DAL层。
1.2 model层中试用ORM信息反问技术 : LINQ to SQL ,Entity Framework,NHibernate, 等。
何为 ORM 技术:对象关系映射。
即:ORM是将结构化的关系型数据,映射到对象模型。如果以 Entity Framework 来说,就是视图将关系数据库的中数据转化成.net原生对象。
二。 Controller
2.1 ASP.NET MVC 中的 Controller.
在 MVC 中所有的Controller都是默认继承自 System.Mvc.Controller
Controller是一个类,类中有许多Method 也就是 Action 。负责处理浏览器来的所有要求
也就是浏览器通过 实例化 Controller 类 查找对应的Action。来响应View。
Controller /Action/id.
2.2 Controller 必须为公开类别。
Controller 名称必须以Controller 结尾。
2.3 当Controller找不到对应Action会默认运行System.Mvc.Controller类别的 HandleUnknownActon 方法。
会默认响应404找不到资源错误信息。
在 MVC 中所有的Controller都是默认继承自 System.Mvc.Controller
System.Mvc.Controller类别中 ”HandleUnknownActon “ 方法被标注为 ‘virtual’ ,虚方法,这是可以被重写的。‘Override’.
因此可以在Controller 中自定义找不到Action的方法。
protected override void HandleUnknownActon(string strName) { Response.Redirect("http://www.google"); }
2.4 Controller 中的NoAction
[NoAction] public ActionResult Index() { }
使得 Controller 中的公开方法 不发布到到web上 等同于private效果
2.5 http限定
httpGet, httpPost,httpDelte,HttpPut,HttpHead,HttpOptions,HttpPatch属性(Attributes)都是动作方法选定器的一份子。
[HttpGet] public ActionResult Index() { }
上面标示只有http Get 请求时ActionInvoker 才会选定这个Action.
2.6 Controller 中的 ActionResult
ActionResult 是Action运行后的回传。
2.7 Controller 中的 ViewResult
return View();
检视 视图返回客户端。 可以选择指定页。
return View(“AAA”);
2.8 Controller 中的 PartialViewResult
与ViewResult 类似。不同点在于,它不能指定页。
2.8 Controller 中的 EmptyResult.
不回传。
2.9 Controller 中的ContentResult.
return Content(str);
输出文字属性 html文本等。
3.0 Controller 中的FileResult.
3.1 JavaScriptResult.
用来响应JavaScript程序代码给浏览器。
public ActionResult JavaScript() { return JavaScript("alert('OK')"); }
3.2 JsonResult.
返回Json格式。
public ActionResult Json() { return Json(new { id = 1, name = "will" }); }
3.3 RedirectReult
重新导向到其他网址。
public ActionResult Redirect() { return RedirectPermanent("Home/NewIndex"); }
3.4 RedirectToRute
与RedirectReult类似。它会匹配路由。
3.5 HttpStatusCodeResult, HttpNotFoundResult, HttpUnauthorizeResult.
三 。 View
View是负责将Controller 传来的数据转换成HTML 格式输出。
4.1 Razor 。 区别于<%:DateTime.Now %>
Razor语法 @DateTime.Now
@if(ViewBag!=null) { 启用 } else { 禁用 }
4.2 @helper 辅助方法。
类似自定义函数。
@helper ShowUnitPrice(int price) { }
就可以在任何地方调用
@ShowUnitPrice(model.price)
4.3 @functions 函数
4.4 @model 设置页面强类型数据模型