读保哥《ASP.NET MVC2开发实战》第三回(Controller1)

上面就是一个Controller类;

执行Controller的过程是先执行Action,然后返回ActionResult。

在执行Controller类时,如果找不到路径,就会调用一个virtual方法:

Protect virtual void HandleUnknownAction(string actionName)

{

}

当然为了突出自己的个性,我们可以重写属于自己的HandleUnknownAction方法:

如:

Protect override void HandleUnknownAction(string actionName)

{

   //Response.Resirect("/");//返回主页

 string htmlMessage="错误";//也可以写html元素

  Response.Write(htmlMessge)

}

接下来介绍一些属性:

NonAction:到不想显示这个action时就可以用这个属性来完成,当然到你把action用private是可以达到这个目的;

HttpGet:接受Get的数据传输;

HttpPost:接受Post的数据传输;

所以一个action方法可以写为两种方式,一个是get,一个是post来执行不同的功能。

重要的来了:ActionResult类

ViewReult类:

 辅助方法:View,例 View("Index")输出Index页面,View("Index","MasterPage")输出Index页面,并设MasterPage为他的母板页;

public ActionResult Index()

{

var data=db.Msg;

View(data);//输出表Msg的数据

}

ContentResult类:响应文字内容的结果;

辅助方法:Content(文字内容,Content-Type,文字编码);

例:

return Content("<Books><Book>天龙八部</Book></Books>","text/xml",Encoding.UTF8);

也可以响应HTML;

例:

String htmlmsg="................"//html内容

return Content(htmlmsg);//此方法会自动检测你的数据格式

FileResult类:

此类有三个子类:FilePathResult:响应一个实体文件;FileContentResult:响应一个byte数组内容;FileStreamResult:响应一个Stream数据。

但它的辅助方法File可以检测它的格式,不必那么麻烦的去搞这三个类;

下载方法设计:

 public ActionResult GetFile()

        {

            var Filename = Server.MapPath("/Views/Shared/html5.pdf"); //文件的路径

            return File(Filename, "application/pdf", "html5.pdf");  //第二个参数指定准确的Content-Type,第三个参数是下载时的名称,建议是英文的。

       }

JavaScriptResult类:

javascript默认的Content-type是appication/x-javascript

响应javascript方式的输出;

  public ActionResult Javascript()

         {

             return JavaScript("alert('Hello')");

         }

利用View里的Ajax来实现:

 <%=Ajax.ActionLink("Run JS","Javascript",new AjaxOptions()) %>

RedirectResult类:

辅助方法:Redirect:

例:return Redirect("/Home/Index");//转到Controller=Home,Action=Index;

RedirectToRoute类:

辅助方法:RedirectToAction,RedirectToRoute;

转到同一Controller中的另一Action的写法:

RedirectToAction("About");

RedirectToRoute(new {action="About"});

转到另一Controller的另一Action

RedirectToAction("About","OtherController");

RedirectToRoute(new {controller="OtherController",action="About"});

转到另一Controller的另一Action且加一Routevalue

RedirectToAction("About","OtherController",new {page=3});

RedirectToRoute(new {controller="OtherController",action="About",page=3});

由于也是初次接触MVC,好些其他的玩意暂时还没碰到,以后看到了再补充吧;

 

 

 

 

 

 

 

posted @ 2012-04-05 21:24  王贺blog  阅读(372)  评论(0编辑  收藏  举报