У меня есть простой виджет, который я создал с помощью ContentPart. В ContentPart есть соответствующий драйвер, виджет можно разместить где угодно на моем сайте Orchard, и все отлично работает! Виджету необходимо захватить некоторые данные у пользователя, проверить его, обработать, а затем отобразить ответ успеха в виджете.Переопределение шаблонов виджета в Orchard CMS
Для этого я определил контроллер, который принимает запрос POST, который будет обрабатывать модель и возвращать одно и то же представление MyForm, если оно недействительно, или вернуть представление FormSuccess, если оно действительно. В шаблоне Widget Part используется @Html.Partial("MyForm")
, чтобы отобразить представление MyForm, содержащее форму Ajax, которая будет обновлять ее с помощью div с ответом POST. Контроллер вернет представление MyForm или представление FormSuccess в зависимости от данных.
Проблема, с которой я столкнулся, заключается в том, что моему дизайнеру необходимо переопределить частичные представления для представления MyForm и представления FormSuccess, он может легко переопределить шаблон отображения детали, но не частичные представления.
Я думаю, причина в том, что в настоящий момент это невозможно, потому что я использую @Html.Partial("MyForm")
. Я обнаружил, что если вместо этого использовать @Display(New.MyForm())
, я могу переопределить представление MyForm, создав файл MyForm.cshtml в папке «Представления» для текущей темы, это именно то, что мне нужно, но как сделать эквивалент для @Display
в действии контроллера?
В данный момент я делаю return this.PartialView("MyForm", model)
или return this.PartialView("FormSuccess")
, который будет использовать оригинальные виды, а не переопределенные. Я заметил, что есть ShapeResult, но я не уверен, что это правильно, и я не знаю, как сгенерировать параметр динамического конструктора. В идеале мне нужен вид MyForm, чтобы иметь строго типизированную модель, чтобы я мог использовать методы HtmlHelper. Ярлыки, TextboxFor и ValidationMessageFor, что невозможно, если модель динамическая?
Кто-нибудь сделал что-то подобное раньше или может предложить кому-нибудь руководство?
Спасибо, Джейсон