Мой ответ основан на ответе SLAks - я архивирую его для дальнейшего использования или для помощи кому-то еще.
Это моя структура:
1) Create.aspx (ViewPage) использует RenderPartial ("Tab-CreateEditForm") для визуализации формы создания / редактирования, которая
2) Tab-CreateEditForm.ascx (частично)
3) Создать действие, которое определяет, какой тип запроса делается. Если мы делаем запрос AJAX, мы, вероятно, не хотим отображать Create.aspx, который по умолчанию, а вместо этого вместо этого выводим Tab-CreateEditForm, потому что он содержит только тег и поля form и директивы страницы NO, head, title и все остальные элементы, которые находятся в Create.aspx.
Итак, действие выглядит так:
//
// GET: /Tab/Create/{tabGroupSlug}
[CanReturnModalView]
[Authorize(Roles = "Administrators")]
public ActionResult Create(string tabGroupSlug)
{
Tab tab = new Tab();
if (Request.IsAjaxRequest())
return View("Tab-CreateEditForm", tab); // returns partial
return View(tab); // returns Create.aspx
}
И это мое действие Edit, которое также использует ту же технику, потому что представление Edit (страница Edit.aspx) также использует тот же частичный элемент управления редактирования.
//
// GET: /Tab/Edit/{slug}
[CanReturnModalView]
[Authorize(Roles = "Administrators")]
public ActionResult Edit(string slug)
{
Tab editing = (Tab) _repository.GetInstance(slug);
if (Request.IsAjaxRequest())
return View("Tab-CreateEditForm", editing); // returns partial
return View(editing); // returns Edit.aspx
}