Orchard CMS - Как использовать тематические атрибуты и атрибуты httppost вместе

Я работаю с Orchard 1.7.2, и в моем пользовательском модуле есть ряд действий контроллера, украшенных атрибутом [Themed].

Моя проблема в том, что когда я также украшаю любой из них атрибутом [HttpPost], тема перестает работать при использовании этого действия.

Кто-нибудь сталкивался с этим раньше?


person Hades    schedule 17.12.2013    source источник


Ответы (1)


Конечно, вы говорите действию, что оно не должно выполняться для запросов на получение, а только для запросов на отправку. Действие, помеченное как сообщение, используется для запроса ajax или для отправки формы на сервер. (Поскольку вы указываете, что отправка запроса на публикацию для страницы является законной, я удалил эту часть, но опять же не рекомендуется)

Попробуйте внедрить IWorkContextAccessor, RequestContext и IThemeManager в свой конструктор, а затем в своем действии сделайте что-то вроде этого:

  contextAccessor.GetContext().CurrentTheme = themeManager.GetRequestTheme(requestContext);

Я не знаю, работает ли это, но, по крайней мере, у вас есть отправная точка.

person jmgomez    schedule 17.12.2013
comment
Нет... запрос POST может законно возвращать ответ, и этот ответ может быть HTML-документом. Подумайте о том, когда вы отправляете форму... URL-адрес действия формы вполне способен вернуть страницу, которую вы можете увидеть. Мой вопрос: как сделать эту возвращенную страницу тематической? - person Hades; 18.12.2013
comment
Вы правы, но, насколько мне известно, Orchard следует шаблону PRG (en.wikipedia. org/wiki/Post/Redirect/Get). Каждое приложение ASP.NET MVC должно следовать этому шаблону. Я отредактирую свой ответ, чтобы добавить код, который может работать. - person jmgomez; 18.12.2013