1

在我的 ASP.NET MVC 2 Web 应用程序中,我利用RenderAction在我称之为网站的“flash message”区域的地方显示 HTML。Flash 区域是指靠近顶部的突出显示区域,其中包含有关先前请求的消息,例如Hello <%: Html.DisplayTextFor(m => m.Username) %>用户登录时。

我正在处理的一条消息要复杂一些。它需要在响应中添加一段 Javascript 代码,但我想按照High Performance JavaScript书中的建议将script元素放在结束标记之前。</body>

在普通视图中,我使用<asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content>script元素放置在页面底部。不幸的是,如果我在使用 呈现的部分视图中尝试相同的操作RenderAction,我会收到解析器错误“内容控件必须是内容页面中的顶级控件或引用母版页的嵌套母版页”。

有没有类似的东西<asp:Content>可以在部分视图中使用,它将内容插入到母版页的相应位置?

4

1 回答 1

2

<asp:Content>RenderAction 不支持,因为 RenderAction 等价于让代码执行您的子操作方法,收集响应,然后将其粘贴到父方法的视图中。

您可以做的是将您需要的脚本添加到HttpContextBase.Items集合中的某个位置。然后在文档结束前的母版页中检索已注册的脚本并将其打印出来。

于 2011-01-20T01:21:33.337 回答