У меня есть основной указатель, из которого я вызываю вид под названием Create, в который передается тип виджета, который я хочу создать в виде строки.Как получить модель из частичного просмотра в MVC
Индексный:
<a href="@Url.Action("Create", "WidgetEditor", new { wType = "image" })"><i class="fa fa-image"></i> Create Image Widget</a> -
<a href="@Url.Action("Create", "WidgetEditor", new { wType = "text" })"><i class="fa fa-file-text"></i> Create Text Widget</a>
Создать Действие:
public ActionResult Create(string wType)
{
ViewBag.wType = wType;
return View();
}
тип затем передается в поле зрения с помощью ViewBag.wType и это оценивается в Create View
Создать вид:
@using (Html.BeginForm())
{
<section class="row">
@{
if (ViewBag.wType == "image")
{
Html.RenderPartial("~/Views/WidgetEditor/_CreateImageWidget.cshtml");
}
else if (ViewBag.wType == "text")
{
Html.RenderPartial("~/Views/WidgetEditor/_CreateTextWidget.cshtml");
}
}
</section>
}
, и в зависимости от этого загружается соответствующее частичное представление. Частичные виды имеют разные модели, поэтому, когда форма отправлена, я не знаю, как какая модель возвращается. Один из _CreateImageWidget или _CreateTextWidget.
Если контроллер HttpPost выглядеть следующим образом
[HttpPost]
public ActionResult Create(DisplayWidgetImageViewModel imageModel, DisplayWidgetTextViewModel textModel)
{
return new ViewResult();
}
я получить заселенной imageModel если _CreateImageWidget парциальное выбран и TextMode если _CreateTextWidget частичный выбран.
Это приемлемо, количество типов виджетов не изменяется, но это не так. Есть ли способ получить какую-то конкретную модель из частичного представления и узнать/узнать, какой она есть, или я делаю это совершенно неправильно?
Существует аналогичная проблема с решением, которое выглядит перспективным здесь http://stackoverflow.com/questions/4922339/determine-the-model-of-a-partial-view-from-the-controller-within-mvc ? rq = 1 – vidriduch