zoukankan      html  css  js  c++  java
  • MVC学习笔记

    仅为学习笔记,非原创

    1.MVC模式:Model(数据模型):用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法,“模型”不依赖“视图”和“控制器”.View(视图):视图层能够实现数据有目的的显示.Controller(控制器):控制器起到不同层面间的组织作用,用于控制应用程序的流程.

    2.程序基本框架结构:app_data:存放数据  Content:建议用来存放一下资源文件  Controllers:建议将Controller类都放到这里,类的命名必须以Controller结尾 Models:业务实体类,数据操作类  Views:在默认情况下,所有的View文件都放到这个目录里,一个Controller类对应一个子目录,而且必须与Controller类的命名一致,shared子目录用以存放一些共享的View的,如Error,master等

    3.Global.asax:路由匹配,在一个route中,通过在大括号中放一个占位符来定义,定义不在大括号中的则作为常量Application_start中指定:RouteCollection类的.routes.MapRoute("name","{controller}/{action}/{id}"[带参数的URL],new { controller = "Home",action = "Index", id = UrlParameter.Optional }[默认值],new { id = @"[\d]*" }[参数的正则匹配]) 使用星号(*)匹配不确定个数的参数,这会匹配URL后面所有的剩余的参数  多个mapRoute自上往下匹配,把default放到最后

    4.Controller与Action: 每个公共方法都被当作是Action方法,通常返回一个ActionResult,默认情况下,Action方法的方法名就是这个Action的Action名,可以通过ActionName特性来指定对应的Action名,特性来分情况进行选择AcceptVerbsAttribute:get,post: 如果你想将一个public的方法设置为不是Action方法,那么你就要为该public的方法添加NonAction的Attribute: 传入参数的必须与url相同  ActionResult:呈现视图给客户端,view()常用方式如下:重定向到另外一个Route:由RedirectToAction 和RedirectToRoute 方法返回;重定向到另外一个URL:由 Redirect 方法返回;返回普通的内容:例如一段字符串:由 Content 方法返回.返回JSON结果。由 Json 方法返回. 如果Action必须返回空值,可以返回这个结果。Controller中没有实现的方法,可以return new EmptyResult();.

    5.view与ViewData:
     类型转换:viewdata["名称"]
     非类型转换:Controller中view页面继承自对象,return view(对象),View调用时直接用viewdata.model,还有veiw.Eval("属性")

    6..TempData
     用以传输一些临时数据,各个控制器间或View之间,默认使用的Session机制
     使用:Tempdata["name"]=值; return view(Tempdata[""] as 对象


    7.Helper与数据的提交绑定:
     Html.ActionLink("标题","action","controller")生成a链接 ("标题","action",["contorller",new {page=1},new {id=""}}
     Html.Action(string actionName, string controllerName, RouteValueDictionary routeValues)

     Html.Raw(""):直接返回编码好的字符串

     Html.ValidationMessage("name",[message,htmlattributes集合或对象)

     url.Action ("action") ("action",new {id=1}) ("action","new controller") ("action","new controller",{参数})
     url.Enconde("中文")
     url.Content("用服务器路径转换为绝对路径")
     表单:{%using(Html.BeginForm("action","controller",Formmethod.Post)){%> 表单内容 <%}%>
     <%Html.BeginForm("action","controller",Formmethod.Post); 表单内容<%html.Endform();<%>
     表单元素:Html.TextBox("name")与controller中viewdata{""]的一致,自动绑定值, viewdata[""]=new SelectList(new[]{}列表内容,默认值("数据库中读取的时候为value值")


    8.modelstate与数据验证
     viewdata.Modelstate.AddModelError() IsValid
    9. action Filter:
     调用ation方法之前或action方法之后处理一些逻辑
     IActionFilter:执行action方法之前或方法之后执行接口
     IResultFilter:返回return view()之前或之后的执行接口
     IAuthorizationFilter:身份验证的filter
     IExceptionFilter:异常filter
     使用:使用在类或方法上[myfiler1(Tarte="")]
     顺序:在Controller中重写的Filter会最先执行,然后到应用在类上的Filter,然后再到应用在类方法上的Filter。而4个接口的方法执行顺序如下:IAuthorizationFilter -> IActionFilter -> IResultFilter -> IExceptionFilter .在BaseController中应用的Filter会被子类继承,如果子类又应用了和基类同样的Filter,则会不执行基类的Filter。
     同时FilterAttribute还提供了一个Order的属性,用于指定Filter的执行顺序。

  • 相关阅读:
    DM7 安装
    LeetCode 第 183 场周赛
    MySQL 源码中的 ut_a 、 ut_ad
    存储领域的会议和研究机构
    LeetCode 第 15 场双周赛
    LeetCode 第 167 场周赛
    值得推荐的C/C++框架和库
    InnoDB 中的锁实现
    LeetCode-第 166 场周赛
    LeetCode 第 165 场周赛
  • 原文地址:https://www.cnblogs.com/zzfy/p/3070768.html
Copyright © 2011-2022 走看看