我需要一些建议。
(对于那些在我大量重新编辑这个问题之前已经阅读过这篇文章的人)
我开发了一些asp.net mvc网页。
每个页面都有一个母版和一些 ascx 控件(在 2 - 6 之间)嵌入到它的 js 和 css 文件中。
到目前为止,一切都很好。
为了提高模块化、灵 active 和可测试性,ascx 现在有望作为独立控件工作。
(每个 ascx 也有自己的 css 和 js 文件,在某些情况下它有另一个控件里面)
为了满足这个要求,我们用查询字符串调用 Controller 。
(不同于从页面调用它的方式 - 通过 Ajax)
呈现的 ascx(部分)显示在浏览器中,没有原始页面的所有其他部分。
在这种情况下,为了让部分正确显示(css)并正确执行(js/jquery),所有相关文件都需要添加(例如:jquery)到用户控件。
这与将文件放置在最合乎逻辑的位置(例如母版页)的概念相矛盾。
我该如何克服这个问题?
请记住,这与在应用程序中创建的每个“控制”ascx 文件相关。
示例:
我添加了 3 个案例的描述来描述我的场景:
(这是从我问 here 的另一个问题复制过来的)。
案例 1: 在页面案例中,页面可能有一些部分在构建页面时使用 ajax 加载。根据用户的操作,可能会使用 ajax 再次调用部分。在这种情况下,我将它们视为页面上的控件。
案例 2: 在独立案例中,可以直接从浏览器调用部分作为测试的一部分。在这种情况下,您只能在浏览器中看到部分内容。
情况 3: 在第三种情况下,部分可以作为 google chrome 扩展中 iframe 的一部分调用(例如)。在这种情况下,您可以在您的 Web 应用程序中可能未构建的页面中看到部分内容。
任何想法将不胜感激。
对于庆祝的人 - 新年快乐!
最佳答案
如果您需要向托管页面添加内容,您可以在 .ascx 文件中添加代码以在服务器端执行此操作。例如:
<%
var link = new HtmlLink { Href = Url.Content("~/Content/Style/MySheet.css") };
link.Attributes["rel"] = "Stylesheet";
link.Attributes["type"] = "text/css";
Page.Header.Controls.Add(link);
%>
为了让这个例子起作用,你的 head
标签必须有一个 runat="server"
。
关于asp.net-mvc - asp.net mvc 独立 ascx 控制我如何最有效地链接(css 和 js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556768/