MVC神韵---你想在哪解脱!(二)

Controller & Action
    通过URL Routing确定的Controller类和Action方法。Action中执行的是表现逻辑,根据用户传入的参数(URL)来操作Model(执行业务逻辑)-->获取数据-->选择一个View进行输出。(
Model就像专家系统的领域专业库或者就像业务服务,你给它要的信息它给你专业业务服务处理,处理结果怎么表达呢,把UI视图拿来,看什么视图了表达方式不同,呵呵。)Action执行之后返回的是一个ActionResult(生成html,页面跳转...).


Controller是一个类,而Action是一个方法。
Conetroller的要求:
1>.继承System.Web.Mvc.Controller控制器基类.如果没有传递参数给控制器,控制器就会默认调用Index的Action.但如果没有Index的Action。就会报错!

     如: public class SampleController:Controller

            {     public ActionResult Index(){....}  //默认的Index的Action

2>.类名必须以Controller结尾。XyzController的名称即为:Xyz

3>.ASP.NET MVC框架会在Web应用程序所引用的所有程序及范围内查找Controller。

4>.引入三个命名空间:system,  system.Web,  system.Web.Mvc

 

Action的要求:
必须是个公有的方法
返回ActionResult类型,也可以返回void。直接使用Response.Write
必须是实例方法
不能使泛型方法
没有标注NonActionAttribute
不能被重载

 

ActionResult:是一个抽象类表示Action的执行结果,ASP.NET MVC架构将在获得ActionReault之后执行其Execute方法。
内置的ActionResult:

ActionRedirectResult:跳转到某个Action。

HttpRedirectResult:跳转到任意地址。

RenderViewResult:生成内容。

EmptyResult:什么都不做。

JsonResult:用于JSON序列化输出。

ContentResult:直接输出字符串。

注:在这里不得不说,URL被作为大型模块的路径指针应用,就像路径文件名的调用一样。通过URL来决定在什么样的业务逻辑下调用什么样的方法处理!当然这种解释不太确切,你理解它才能懂得MVC的控制精髓!

 

生成View
ViewEngine(表明使用了什么样的View进行生成),它是可替换的。
默认使用aspx,ascx,master
MvcContrib提供了额外的4种ViewEngine。 ASP.NET MVC的默认View:.aspx--页面内容的主体,.master--模板框架,.ascx--局部视图:Html.RenderUserControl方法将一个UserControl生成局部视图。
需继承System.Web.Mvc.ViewPage
--ViewData有个属性为Model
--ViewPage的ViewData为T类型
--默认的ViewPage近似于ViewPage

 

View中生成html的方式:
1>.内联脚本方式:for{},foreach{}。类似ASP,但是并不是业务逻辑和显示的html放在一起。两者还是分离的。
使用脚本最大的好处就是使用灵活。调试起来是不是不是很方便???
2>.使用控件:Repeater(推荐)可以用来显示一维数据,ListView (推荐)可以用来显示二维数据
3>.使用辅助方法
--HtmlHelper类:提供的一些辅助的方法为我们生成Form,ActionLink,Button,CheckBox,Select(下拉框),Encode....的HTML
方法中提供了很多重载。
--UrlHelper类:生成Url以及与Url相关的东西。比如生成Action的Url。

 

 

 

posted @ 2013-05-21 22:00  天山式神剑  阅读(447)  评论(3编辑  收藏  举报