5. 控制器和Action方法

來源:互聯網
上載者:User
控制器和Action方法

原文:http://quickstarts.asp.net/3-5-extensions/mvc/MVCControllerActions.aspx

1. 介紹
控制器的職責:定位並執行Action方法,並確保它能正確執行;擷取Action方法所需的參數並傳遞給它;捕獲Action方法執行期間出現的錯誤;提供“WebFormViewFactory”類以便產生ASP.NET頁面類型的視圖。

一個簡單的樣本:
namespace MvcApplication.Controllers
{
public class HomeController : Controller
{
public void Index()
{
RenderView("Index");
}

public void About()
{
ViewData["CompanyName"] = "Contoso";
RenderView("About");
}
}
}

2. Action方法
MVC架構預設認為所有public方法都是Action方法。若不想讓某個public方法成為Action方法,應該對其使用“NonActionAttribute”屬性標記。

3. Action方法的參數
預設地,Action方法的參數是一組索引值對,它們來自Form表單、查詢字串和cookie。
控制器基類Controller負責把來自表單資料和RouteData執行個體的參數傳給Action方法。當參數值無法解析時,若參數時引用或Nullable類型,則傳遞null給它,否則則拋出異常。
為了直接存取URL中的資料,控制器提供了Request和Response類,他們的語義對應於HttpRequest 和 HttpResponse。下面是一個簡單的例子:

public void Detail()
{
int id = Convert.ToInt32(Request["id"]);
}

4. 自動對應Action方法的參數
當HTTP請求中包含與Action方法的參數名字相同的參數時,該參數的值將被自動傳遞給Action方法。另外,MVC架構同樣支援選擇性參數,當Action方法的參數為nullable類型,且為傳遞給此參數任何值時,控制器將傳遞null給此參數。下面是一個樣本:

public void ShowArticles(DateTime date)
{
if(!date.HasValue)
{
date = DateTime.Now;
}
// ...
}

5. 處理未知Action
當控制器處理一個未知的Action時,它將拋出HandleUnknownAction異常,控制器預設的處理方式是返回HTTP 404錯誤。另外,可以通過重寫“HandleUnknownError”方法實現自訂的錯誤處理。下面是一個例子:

public void override HandleUnknownError(string action) {
// Redirect to a search page where the unknown action is
// the search query. Determine when to show the search page
// based on the result of calling a ShouldShowSearch() method.
if (ShouldShowSearch(action) == true)
{
RedirectToAction("search", action );
return;
}
base.HandleUnknownError(action);
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.