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