您的位置:首页 > 编程语言 > ASP

《Pro ASP.NET MVC 3 Framework》学习笔记之二十三【Controllers和Actions】

2012-03-09 00:42 579 查看
生成输出(Producing Output)

在controller完成处理请求之后,通常需要生成一个响应。当我们通过直接实现IController接口创建一个简单的controller时,我们需要对处理请求的每一个方面负责,包括创建对客户端的响应。如果我们想发送一个HTML响应,那我们必须创建并且集合HTML数据,然后使用Response.Write方法将数据发送到客户端。类似地,如果我们想重定向用户到其他的URL,可以使用Response.Redirect方法。

下面是具体的实例:

View Code

//Controller部分
public ViewResult Index()
{

ViewData["Message"] = "Hello";
ViewData["Date"] = DateTime.Now;

return View();
}

//View部分
@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

The day is: @(((DateTime)ViewData["Date"]).DayOfWeek)
<p />
The message is: @ViewData["Message"]


ps:我们能看到需要对object对象进行类型转换,现在有了ViewBag以后,推荐使用ViewBag,但是尽量使用强类型view和view models是非常明智的。

执行重定向(Performing Redirections)

一个来自action方法常见的结果不是直接生成任何输出,而是重定向用户到其他的URL。大多数时候,这个重定向的URL是应用程序里面另外一个action方法,用来生成我们想给用户看到的输出。

POST/REDIRECT/GET模式:最频繁使用的重定向是在处理POST请求的action方法里面,正如我们前面提到的,POST请求是要改变应用程序状态的,如果我们处理一个请求后接着仅仅是返回HTML,我们就冒了用户第二次点击重载按钮和重提交按钮所导致的不可预期的异常的风险。为了避免这个问题,我们可以遵循POST/Redirect/GET模式。在这个模式中,接收一个请求,处理它并重定向到浏览器以至于浏览器为其他的URL制造一个GET请求。GET请求不应该修改我们应用程序的状态,所以任何无意的关于请求的重提交不会引起任何问题。

当我们执行一个重定向,我们就发送了两个HTTP编码中的一个到浏览器:

①发送HTTP 302状态编码,代表暂时重定向。这是最频繁使用的重定向类型,MVC3里面也是这样,当我们遵循Post/Redirect/Get模式时,这时发送的代码就是我们想要的。
②发生HTTP 301状态编码,表示永久重定向。这要慎重使用,因为它指示HTTP编码的接收者不会再次请求原始的URL并使用包含了重定向编码的新URL。如果你有疑虑,那么最好使用暂时重定向,发送302编码。

不早了,今天的笔记就到这里!笔记里面不对的地方还请路过的朋友指正,谢谢!
晚安
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐