读保哥《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,好些其他的玩意暂时还没碰到,以后看到了再补充吧;