2典型樣本:爲什麼總是定義一個ActionResult作爲返回類型雖然的ViewResult或PartialViewResult返回
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult Create()
{
return PartialView();
}
他們爲什麼不返回最合適的類型一樣的ViewResult和PartialViewResult?
2典型樣本:爲什麼總是定義一個ActionResult作爲返回類型雖然的ViewResult或PartialViewResult返回
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult Create()
{
return PartialView();
}
他們爲什麼不返回最合適的類型一樣的ViewResult和PartialViewResult?
當然他們可以有ViewResult
或PartialViewResult
返回類型在這種情況下。但是,它會給你帶來什麼好處?如果稍後您決定在某些情況下(例如,當請求來自Ajax調用),您想要返回JsonResult
?
您通常不會自己處理操作方法的返回值。它由MVC框架在幕後處理,所以你真的不關心簽名。
好的,你說的是我認爲我可以獨立地改變具體的返回值而不改變動作簽名。即使對於單元測試,如果檢查IsInstanceOfType(...)它也沒有關係,它總是測試我真正期望的conrete。順便說一句。你不應該吃這朵花:P – Elisabeth 2012-08-12 10:30:51
但是...爲什麼Remote Validaton動作總是一個JsonResult返回類型?那是我知道的唯一例外。 – Elisabeth 2012-08-12 10:40:13
@Elisa我對「移除驗證」並不熟悉,但是在瀏覽基礎知識後,它似乎是某種合約,包括從操作方法傳遞的數據格式(需要JSON)。從我發現的一些樣本中看來,簽名中的'ActionResult'返回類型應該沒問題。 – twoflower 2012-08-12 10:45:39
因爲在更改實際返回類型(或引入第二個類型)時,必須冗餘地更改已聲明的返回類型。 – usr 2012-08-12 10:19:24