Визуализация частичного представления из viewbag в c # mvc 3 - PullRequest
0 голосов
/ 23 августа 2011

У меня есть решение с двумя проектами, и я пытаюсь отправить частичное представление из одного проекта в другой.

Итак, в проекте A у меня есть такой контроллер:

    public PartialViewResult Index()
    {
        return PartialView("_Forms");
    }

А в проекте B у меня есть такой контроллер:

    public ActionResult Index()
    {

        var form = pa.Index(); // <-- This is the controller from controller A

        ViewBag.CMSForm = form;

        return View();
    }

... пока все хорошо, но теперь мне нужно визуализировать частичное представление из ViewBag.CMSForm, и я не могу понять, как.

Ответы [ 3 ]

0 голосов
/ 23 августа 2011

Почему бы не использовать рендеринг ControllerA.Index-action с точки зрения ControllerB?

<p>
@Html.Action("Index", "ControllerA")
</p>
0 голосов
/ 20 августа 2013

Если вы пытаетесь визуализировать только частичное представление ...

Я просто возился с чем-то похожим на это, где мне нужно было визуализировать разные частичные представления в одном представлении индекса в зависимости от того, откуда пользователь направлял.

То, что я сделал, было примерно таким ...

public ActionResult Index()
{

    ViewBag.CMSForm = "_Forms";

    return View();
}

Тогда на ваш взгляд

@{

string form= ViewBag.CMSForm;
 }
 @section CustomForm{


@Html.Partial(form)
}
0 голосов
/ 23 августа 2011

Я адаптировал решение из http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/ для вашего случая.

Измените код из проекта B на этот:

public ActionResult Index()
{

    var form = pa.Index(); // <-- This is the controller from controller A

    using (var sw = new StringWriter())
    {
        // Find the actual partial view.
        var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, form.ViewName);
        // Build a view context.
        var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
        // Render the view.
        viewResult.View.Render(viewContext, sw);
        // Get the string rendered.
        ViewBag.CMSForm = sw.GetStringBuilder().ToString();
    }

    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...