我有我的抽象BaseControlller像這樣的MVC動作(這個動作在所有繼承控制器是常見的):ASP.NET MVC行動可選PARAMS
//
// GET: /controller/RenderForm/{formType}
[Authorize(Roles = "Administrators")]
public ActionResult RenderForm(FormType formType, BaseContentObject contentObject)
{
string constructPartialViewName = RouteData.Values["controller"] + "-" + formType + "Form";
return PartialView(constructPartialViewName, contentObject);
}
與這條路線:
routes.MapRoute(
"ContentObjectsFormRendering",
RouteType.Regular,
"{controller}/RenderForm/{formType}",
new {controller = "", action = "RenderForm", formType = ""}, null
);
的問題出現時,我讓瀏覽器請求,如:
〜/頁/ RenderForm /創建
這是呈現創建表單的請求。 這是通過瀏覽器完成的 - 例如輸入URL。這裏沒有BaseContentObject實例(請注意,這不能通過瀏覽器提供,因爲在編輯的情況下它總是從數據存儲區中取出),我認爲這是困擾他的原因。
(唯一的例外是:無法創建抽象類。)
但是像這樣執行的RenderAction時:
<%
Html.RenderAction("RenderForm", ViewData.Model.ContentType.ToString(), new {formType = FormType.Edit, contentObject = ViewData.Model}); %>
它呈現與BaseContentObject實例細節的編輯形式(提供通過ViewData)就好了。
如果我從動作中刪除BaseContentObject contentObject參數然後渲染創建工作正常,但然後我不能提供編輯的第二種情況下的內容對象參數。
我該如何解決這個問題?
你能提供例外嗎? – dariol 2010-02-01 11:42:18