У меня есть действие MVC на моем абстрактном BaseControlller , как это (и это действие является общим для всех наследующих контроллеров):
//
// 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 (обратите внимание, что это никогда не может быть предоставлено через браузер для Create, поскольку он всегда извлекается из хранилища данных в случае редактирования), и я думаю, что это его беспокоит.
(Исключение составляет: Невозможно создать абстрактный класс.)
Но при выполнении RenderAction так:
<%
Html.RenderAction("RenderForm", ViewData.Model.ContentType.ToString(), new {formType = FormType.Edit, contentObject = ViewData.Model}); %>
визуализирует форму редактирования с подробностями из экземпляра BaseContentObject (при условии, через ViewData) просто отлично .
Если я удаляю параметр BaseContentObject contentObject из действия, то рендеринг Create работает нормально, но тогда я не могу предоставить параметр объекта содержимого во втором случае для Edit.
Как я могу решить это?