script
和 link
标记,而不仅是在局部控件中内联呈现它们?为了澄清,我想从一个使用
Html.RenderPartial
的视图中渲染的控件包含要使用的文件,因此不能在其上具有服务器端内容控件。我希望能够将文件包含在html head
部分中,以避免验证问题。 script
和 link
标记,而不仅是在局部控件中内联呈现它们?Html.RenderPartial
的视图中渲染的控件包含要使用的文件,因此不能在其上具有服务器端内容控件。我希望能够将文件包含在html head
部分中,以避免验证问题。if (false)
代码块包装它们,以便它们在运行时不会被包含。<% if (false) { %>
<link href=...
<script type=...
<% } %>
http://www.codeproject.com/Articles/38542/Include-Stylesheets-and-Scripts-From-A-WebControl-.aspx
本文介绍了如何覆盖HttpContext.Response.Filter的相关信息,对我非常有帮助。
@import
:<style type="text/css>
@import url(cssPath.css);
</style>
刚刚看到 Haacked 上的这个选项,想起了您的问题。在局部视图中使用标题的 Content
占位符,然后按照通常的方式添加 CSS。
根据您的控件需要多少CSS / JS,最安全的方法可能是将额外的样式包含在主CSS文件中。这样可以避免额外的服务器请求,并且客户端应该会缓存所有内容。我知道这会破坏控件的自包含性(创造一个词),但这可能是您最好的选择。
如果你愿意打破规范,你可以仅使用部分内容发出样式定义。这在大多数最新的浏览器中都能正常工作。
我是MVC的新手... 最近我遇到了一个挑战。我使用了MVC视图页面而不是部分视图,添加了自己的主页面(因为我有一个CSS文件在多个视图之间共享),并将CSS添加到主页面中。希望这些信息能够帮助到您。
抱歉,您无法从部分控件引用“上级”页面中的内容(或添加任何内容)。唯一的通信方式是通过传递ViewData / Model从父级到部分控件进行“向下”通信。
您正在描述使用内容占位符的主页面和普通页面的功能,但是部分控件不像那样工作。
但是,如果我没有弄错的话,您可以将脚本或链接标记物理添加到实际呈现部分页面的父页面上- CSS 也应该被部分页面使用。
Todd的答案很好,前提是您只有一个控件实例,并且没有其他代码想要在主页面的“”标签中“注入”任何内容。不幸的是,您很少能依赖这一点。
我建议您在主页面中包含所有需要的CSS文件。第一次访问时会有一些性能损失,但之后浏览器缓存将会起作用。您可以(也应该)将样式拆分为多个.css文件,以从可以同时下载它们的HTTP代理中受益。至于.js文件,我建议您实现类似于google.load()
机制的东西,这将允许您按需加载脚本。
<head runat="server>
<asp:ContentPlaceHolder ID="head" runat="server" />
</head>
并在您的掌控之中
<asp:Content ID="head" runat="server">
<script src="something.js"></script>
</asp:Content>