导航

MVC 学习记录

Posted on 2011-02-27 19:10  夹心刺猬  阅读(340)  评论(0)    收藏  举报
1:MVC的 【测试项目】必须 【添加】 对 【项目】的 【引用】。

2:Controller 的 Action 中的 Return View()是寻找当前Action的对应页面。

  例如 public ActionResult Index(){Return View();}则会寻找Index.aspx页面

3:Controller的 Action 中 跳转 使用 return RedirectToAction("Action", "Controller", this.RouteData);

  返回类型为 RedirectToRouteResult

4:Html.ListBox 生成的 Select 允许选择多行 Html.DropDownList 生成的 Select 则不允许.

5:Html.Partial 起到页面引入作用 需要编译的 <%:Html.Partial%>

  Html.RenderPartial 也起到引入 但类似于 Respose.Write 直接删除。

6:Action的属性 ActionName属性可以在页面中代替被调用的 Action函数名称。

7:ViewEngin是呈现引擎。默认的未 WebFormViewEngine .

  其他引擎有 Spark (支持类似Master Page的技术)

8:IViewEngine接口 与IView 来实现引擎重载

  IViewEngin接口中 FindPartailView 未全局查找

  IView接口属性

    HttpContext,

    Controller,//调用Controller实例

    RouteData,//来源徐路由

    ViewData,//页面数据字典

    TempData,临时数据 Session中存储 仅1次失效

    View,

    ClientValidationEnabled,//判断客户端是否做数据验证

    FormContext,//包含客户端Form的信息

    FormIdGenerator,//判定Form的信息

    IsChildAction,//如果True调用PartailView 否则使用View.

    ParentActionContext,

    Write //输出信息

9:Url 的规律性强 有利于SEO,帮助搜索引擎爬虫抓取

 MVC会体现网站Url的逻辑路径而不是实际物理路径

  Url的全名称意思为:【统一】【资源】【路径】

10:Routing与URLRewriting技术的比较

  URLRewriting是重写 但是请求 还是要用URL实际路径(障眼法)只能编译重写的RUL

  Routing 不需要执行重写 可生成URL

11:新设置的路由规则匹配顺序应该 由小到大  由窄道宽

12:所有的路由都由RouteCollection管理。

13:较大工程可以使用Area来分成若干模块的小站。

14:routes.MapRoute("Defaults","query/{query-name}/{*extrastuff}") 来匹配任意多参数

  Routes.add(new Route({resource}.axd/{*pathinfo},New StopRoutingHandler()) 是停止匹配 直接是物理路径

  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  忽略匹配 直接匹配物理路径 且 开销少于停止匹配

15:Route是RouteValueDictionary的一个对象。

16:Route的扩展

  public classRestRoute:RouteBase

  {

  //匹配上下文照实例

  public override RouteData GetRouteData(HttpContextBase             httpcontext){}

  //匹配路径

  public override VirtualPathData GetVirtualPath(){}

  

  }

17:ControllerActionInvoker 来负责 Action Controller与Route之间的沟通

18:Rest架构  [HttpPost] //创建  [HttpPut] //更新 [HttpGet] //读取  [HttpDelete] //删除 

19:MVC参数来源 {1} Request Form Collecation {2} Route Data {3} Request QueryString Collecation

20:同步和异步比较:

  同步:{1}操作短小迅捷 {2}  要求高可测试性 {3} 要求高CPU而不是高IO

  异步:{1}通过测试发现该操作时网站应用性能瓶颈{2}对并行性由高要求 {3} 高IO > 高CPU

  同步Action:{1} 继承 Controller {2}开始结束以一个函数完成  

  异步Action:{1}继承 AsyncController {2}开始一个函数以 Asyn结尾 完成调用一个函数 以Completed结尾

21:对于异步调用 加[AsyncTimeout(100)]访问执行100秒报超时异常

22:Filter是作用是对Action做附加说明

  [Authorzie] 登陆权限验证授权

     Role="角色1,角色2" Users="用户1,用户2" 两种规则可以叠加 

  [HandleError] 错误处理
          [HandleError(ExceptionType=typeof(ArgumentNullException),View="View",Order=1)]
          [HandleError(ExceptionType=typeof(Exception),Order=2)]

     View="错误跳转页面";Order=?负责异常捕捉的顺序 从小到大 min >> max

  [OutputCache] 缓存

    在Webconfig中定义一个OutputCache规则 之后可通过 OutputCache(CacheProfile="规则名")来调用

  [RequeireHttps] - [一定要使用HTTPS来传输的]

    [Https]-[网络加密] [SSL]-[加密协议]

23:Filter 的基础接口:(fx用)IAuthorizationFilter  , (fx用)IExceptionFilter , IActionFilter ,IResultFilter

    时间接口类的命名规则是 New+Attribute = NewAttribute 使用的时候是  [New]

24:Filter的执行顺序

    1:Order小的先执行  > 同样Order根据定义范围 例如 Controller先Action执行 

    2:没有Order的最后执行

    3:代码内部定义的Filter最先执行

    4:同类型Filter无顺序规定

25:适合使用AJAX的页面

  1:大容量页面 较小部分局部改变

  AJAX的优势{1} 减少数据传输,提高用户响应时间 {2} 较少服务器负担 {3} 操作异步 不影响其他操作

  AJAX的缺点{1} 异步请求不保存请求与状态<回退按钮> {2}用户没有JavaScript脚本支持(禁用脚本) {3} AJAX被乱用

26:AJAX的使用标准

  1:每个AJAX请求都需要一个制定的ACTION

  2:ACTION可以判断是否来自AJAX

  3:针对AJAX请求返回一个特殊的View

27:MVC AJAX 需要的类库文件MicrosoftAjax.js MicrosoftMvcAjax.js

28:String isAjaxPost = Request.Form["X-Requested-With"]??Request.Headers["X-Requested-With"];

  来获取是否是Ajax请求 如果不是空 则是 AJAX 则返回AJAX结果

  Ajax使用PartialView返回

29: