Есть ли способ использовать что-то вродев рамках частичных представлений, которые отображаются с RenderAction? - PullRequest
1 голос
/ 20 января 2011

В моем веб-приложении ASP.NET MVC 2 я использую RenderAction для отображения HTML в области веб-сайта, которую я называю «флеш-сообщением».Под областью флэш-памяти я подразумеваю подсвеченную область в верхней части, которая содержит сообщение о предыдущем запросе, например Hello <%: Html.DisplayTextFor(m => m.Username) %>, когда пользователь входит в систему.

Одно флэш-сообщение, над которым я работаю, немного большесложный.Нужно добавить блок кода Javascript в ответ, но я хочу поместить элемент script перед конечным тегом </body>, как рекомендуется в книге Высокопроизводительный JavaScript .

В обычном режиме я использую <asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content>, чтобы поместить script элементов внизу страницы.К сожалению, если я попытаюсь сделать то же самое в частичном представлении, отображаемом с RenderAction, я получу ошибку синтаксического анализатора: «Элементы управления содержимым должны быть элементами управления верхнего уровня на странице содержимого или вложенной главной странице, которая ссылается на главную страницу».

Есть ли что-то вроде <asp:Content>, которое я могу использовать в частичных представлениях, которые вставят содержимое в соответствующее место главной страницы?

1 Ответ

2 голосов
/ 20 января 2011

<asp:Content> не поддерживается с RenderAction, потому что RenderAction эквивалентен наличию кода, который будет выполнять ваш дочерний метод действия, собирать ответ и затем вставлять его в представление родительского метода.

Что вы можете сделатьэто добавить нужные вам сценарии в коллекцию HttpContextBase.Items.Затем на главной странице прямо перед концом документа найдите зарегистрированные скрипты и распечатайте их.

...