Как использовать EditorTemplates из AREA вне текущего в ASP.NET MVC - PullRequest
2 голосов
/ 10 августа 2010

Рассмотрим проект с 2 областями.

/ Areas / Blog / Areas / Dashboard

Теперь скажите, что в области моего блога есть редактор для типа SpecialBlog./Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx

Что если представление, являющееся частью моей области панели мониторинга, хотело бы отобразить специальный блог?

Следующий код работает изПредставления внутри области «Блог», но не из области «Панель инструментов».

Html.EditorFor (model => model)  // model is type SpecialBlog

Даже если указывать путь не удается,

Html.EditorFor (model => model, "~/Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx")

Единственное, что я могу получить, это работать

Html.RenderPartial (Model, "~/Areas/Blog/Views/Blog/EditorTemplates/SpecialBlog.ascx");

Но любая маршрутизация в SpecialBlog не выполняется.(т.е. он имеет свои собственные вызовы Html.EditorFor для других шаблонов редактора в области блога).

Я делаю что-то в корне неправильно?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2014

У меня была та же проблема, я хотел использовать ниже

~ / Areas / ActivityPicker / Views / ActivityPicker / EditorTemplates / ActivityPicker.cshtml

Это далеко от Евангелия, но я неНе думаю, что вы можете сделать это (в MVC 5).Когда я попробовал и отладил его, он закончился ниже:

"EditorTemplates / ~ / Areas / ActivityPicker / Views / ActivityPicker / EditorTemplates / ActivityPicker.cshtml"

, то есть он добавил EditorTemplatesначало.

Затем он просмотрел обычные места, чтобы найти это, то есть просмотр и непосредственные представления области + шаблоны редактора, потому что он не начинается с '~', он не проверяет все местоположения, только общий вид и текущая область (проверьте в VirtualPathProviderViewEnginer :: IsSpecificPath)

Также не помогает замена '~' на '../', то есть вы не можете сделать что-то подобное ниже:

"EditorTemplates /../../../ Области / ActivityPicker / Представления / ActivityPicker / EditorTemplates / ActivityPicker.cshtml"

по той же причине

Даже если это сработалоЯ бы не хотел этого делать, так как тогда вы будете отвечать на побочный эффект, который может прекратиться в следующем выпуске

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

0 голосов
/ 21 февраля 2011

Я полагаю, что помещение этого в общую папку будет работать.

Если вы не хотите помещать в основную / общую папку, вы можете попробовать установить другой путь в вашем ViewEngine (добавить в Application_start или получить путь от того, который вы используете) к чему-то вроде / area / shared папка (это означает создание папки) для всех областей и размещение там шаблонов.

...