ViewData предназначен для размещения фактических данных, а не самих представлений, содержащих код разметки и рендеринга. Не было бы возможно для Вас, чтобы сделать это:
public ActionResult MyActionMethod()
{
var model = new MyModel();
model.UsePartialView1 = false; // Tell the view not to use Partial View 1
return View("MyView", model);
}
И в представлении MyView
:
<% if (Model.UsePartialView1)
Html.RenderPartial("PartialView1", Model);
else
Html.RenderPartial("PartialView2", Model); %>
Это будет оказывать либо PartialView1
или PartialView2
с использованием той же модели в зависимости от состояния, установленного контроллером ,
Или вернуть частичный вид с моделью непосредственно из контроллера, вместо нормального View, вы можете сделать это:
public ActionResult MyActionMethod()
{
var model = ...
ViewData["MyViewData"] = ...
return PartialView("PartialView1", model);
}
Это вернет Partial View PartialView1 непосредственно клиенту , Это в основном полезно в сценариях AJAX, поскольку результат, скорее всего, не будет всей HTML-страницей. Частичные виды: .ascx
.
В идеале мне нужно управлять визуализированным PartielView через контроллер. Как это можно сделать? – shahidaltaf
@ shahid81 Зачем вам это нужно? Каков ваш сценарий? Вы все же можете контролировать, какой частичный вид визуализируется * через контроллер *, используя описанный мной метод, если только Контроллер определяет, выполняется ли условие. – bzlm
У меня небольшая форма с несколькими результатами, разными экранами подтверждения, но я не хочу иметь разные URL-адреса. Подобно веб-формам, использующим Multiviews. – shahidaltaf