Mvc3 - использование частичных представлений в другой области

У меня есть два вопроса относительно частичных представлений...

  • Когда использовать Partial views vs @helper методы, я использовал оба взаимозаменяемы и хотели бы стать более последовательными в своих Применение. Что вы, ребята, делаете?

  • Как вы ссылаетесь на частичный вид из другой области.

У меня есть область под названием admin, и у меня есть частичный вид в обычной директории представлений. Как я его использую.. Я попробовал следующее, которое не работает, поскольку оно не может быть найдено.

@Html.Partial(VirtualPathUtility.ToAbsolute("~/Views/ControllerName/_PartialView"),
 Model)

другой я пробовал -

@Html.Partial("~/Views/ControllerName/_PartialView", Model)

Ответ 1

Я не уверен, если вы имеете в виду помощников Html или помощников бритвы, когда вы говорите "помощники". В любом случае, я создаю только помощников Html, когда это маленький, индивидуальный элемент, такой как элемент управления.

Если вы имеете в виду помощников Razor, то они отличаются от Partials тем, что вы можете называть их функциями, передавая любые параметры, которые вы хотите. Частицы в значительной степени застревают с "модельной" системой (и, конечно, Temp/ViewData/Bag.

Все о том, как вы хотите работать с кодом.

Что касается вашего Partial. Вы должны включить суффикс.

@Html.Partial("~/Views/ControllerName/_PartialView.cshtml", Model)

Ответ 2

Так как вопроситель спросил здесь о местах, как это сделать в области

 @Html.Partial("~/Areas/Store/Views/Pages/Checkout.cshtml")

Ответ 3

Я просто даю конкретный и простой пример того, что я пытаюсь сделать. Мне нужно иметь возможность выхода из системы на странице области с помощью частичного просмотра, находящегося в главной общей папке. Вот что я сделал:

  • В представлении области я ссылаюсь на частичный вид на

       <div class="float-right">
            <section id="login">            
              **@Html.Partial("~/Views/Shared/_LoginPartial.cshtml")**
            </section>
       </div>
    
  • В главной общей папке, где был найден код _LoginPartial, я добавил {new = area ("")}, from:

    using (Html.BeginForm("LogOff", "Account", FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    

    to:

    using (Html.BeginForm("LogOff", "Account", **new { area = "" },** FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" }))
    

Надеюсь, что это поможет в некотором роде!

Ответ 4

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

Таким образом, вы положили его в основную папку ~/Views/Shared/, например,

~/Views/Shared/_MyPartialView.cshtml.

Затем вы можете обратиться к нему из любой области, сказав

@Html.Partial("_MyPartialView")

Ответ 5

Убедитесь, что ваши контроллеры в областях имеют аннотацию [Area("MyArea")]. На момент написания этой статьи извлечение частичных представлений через границы области с помощью обновлений div Ajax в ASP.NET Core работает для меня с помощью Tag Helpers и @Html.ActionLink.