Как я могу сделать представление визуализации частичного (пользовательский элемент управления) из другой папки? В предпросмотре 3 я использовал для вызова RenderUserControl полный путь, но с обновлением до предпросмотра 5 это уже невозможно. Вместо этого мы получили метод RenderPartial, но он не предлагает мне ту функциональность, которую я ищу.
c#
asp.net-mvc
renderpartial
Борис Калленс
источник
источник
FindPartialView
метод чем-то вродеif(partialViewName.Contains"/")partialViewName="~/Views/"+partialViewName;
В моем случае я использовал MvcMailer (https://github.com/smsohan/MvcMailer) и хотел получить доступ к частичному представлению из другой папки, которой нет в «Shared». Вышеуказанные решения не сработали, но с использованием относительного пути.
источник
Если вы часто используете этот другой путь, вы можете исправить это навсегда без необходимости постоянно указывать путь. По умолчанию он проверяет частичные представления в папке View и в папке Shared. Но скажем, вы хотите добавить один.
Добавьте класс в вашу папку Models:
Затем в своем файле Global.asax.cs добавьте следующую строку:
источник
Для пользовательского элемента управления с именем myPartial.ascx, расположенного в папке Views / Account, напишите так:
источник
Я создал обходной путь, который, кажется, работает довольно хорошо. Я обнаружил необходимость переключиться в контекст другого контроллера для поиска имени действия, просмотра представления и т. Д. Чтобы реализовать это, я создал новый метод расширения для
HtmlHelper
:ControllerContextRegion
определяется как:То, как это используется в представлении, выглядит следующим образом:
Это может привести к нежелательным побочным эффектам, если ваш код требует, чтобы
controller
компонент маршрута не изменился, но в нашем коде пока что нет никаких отрицательных моментов для этого подхода.источник
VirtualPathProviderViewEngine, на котором основан WebFormsViewEngine, должен поддерживать символы «~» и «/» в начале пути, поэтому приведенные выше примеры должны работать.
Я заметил, что ваши примеры используют путь "~ / Account / myPartial.ascx", но вы упомянули, что ваш пользовательский элемент управления находится в папке Views / Account. Ты пробовала
или это просто опечатка в твоем вопросе?
источник
Для читателей, использующих ASP.NET Core 2.1 или новее и желающих использовать синтаксис Partial Tag Helper , попробуйте следующее:
Тильда (~) является необязательной.
Информация на https://docs.microsoft.com/en-us/aspnet/core/mvc/views/partial?view=aspnetcore-3.1#partial-tag-helper также полезна.
источник
ты должен попробовать это
поместите
~/Views/
перед вашим кодомисточник
Создайте пользовательский механизм просмотра и создайте метод, который возвращает ViewEngineResult. В этом примере вы просто перезаписываете
_options.ViewLocationFormats
и добавляете каталог вашей папки:Пример: https://github.com/AspNetMonsters/pugzor
источник
Попробуйте использовать
RenderAction("myPartial","Account");
источник