PartialView не найден: ViewEngine ищет не в том месте - PullRequest
0 голосов
/ 24 мая 2018

У меня есть следующие 3 файла (примечание: отображаются только соответствующие данные):

~ / Controllers / HomeController.cs

namespace MyApplication.Controllers {
    public class HomeController : Controller {
        public ActionResult Index() {
            return View();
        }
    }
}

~ / Views / Home / Index.cshtml

@Html.Partial("~/Areas/AccountManager/Views/Account/_RegisterPopup.cshtml")

~ / Areas / MyArea / Views / Account / _RegisterPopup.cshtml

@Html.Partial("_PasswordInfo", null, new ViewDataDictionary())

~ / Areas / MyArea / Views / Shared / _PasswordInfo.cshtml

@using MyApplication.Areas.MyArea
<h2>PasswordInfo</h2>

При наведении курсора мыши на вызов Html.Partial в файле _RegisterPopup отображается (view) ~/Areas/MyArea/Views/Shared/_PasswordInfo.cshtmlи он должен быть в состоянии найти это представление.

Когда я запускаю приложение и перехожу на страницу Home / Index (которая вызовет метод индекса HomeController), ему не удастся найти частичное _PasswordInfo и выдатьисключение.Исключение показывает только поиск ~/Views/Home/ и ~/Views/Shared/.Где он должен был искать в ~/Areas/MyArea/Views/.

Я думаю, что проблема здесь в том, что поскольку HomeController в основном приложении (а не контроллер в области) выполняет рендеринг здесь, он будет искать только вПредставления в основном приложении вместо его областей.Как лучше всего решить эту проблему?

Я бы хотел неявно ссылаться на частичную часть _PasswordInfo, поэтому мне не придется беспокоиться о ссылках, когда я изменю его путь.Но ссылка на частичное с указанием полного пути @Html.Partial("~/Areas/MyArea/Views/Shared/_PasswordInfo.cshtml", null, new ViewDataDictionary()), а не только его имени @Html.Partial("_PasswordInfo", null, new ViewDataDictionary()) предотвращает выбрасывание исключения, как и ожидалось.

Будет ли по-прежнему лучше использовать этот подход?Было бы лучше расширить механизм просмотра, чтобы всегда искать области?Или есть какой-то способ заставить ViewEngine понять, что он должен искать в представлениях области в этой ситуации?

...