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的执行顺序。

posted @ 2013-05-10 11:21  雄鹰低飞  阅读(195)  评论(0编辑  收藏  举报