我需要一些建议。
(对于那些在我重新编辑此问题之前已经读过此书的人)
我已经开发了一些ASP.NET MVC网页。
每个页面都有一个母版以及一些js和css文件嵌入到其中的一些ascx控件(介于2-6之间)。
到目前为止,一切都很好。
为了提高模块化,灵活性和可测试性,现在期望将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);
%>
为了使此示例正常工作,您的
runat="server"
标签必须具有head
。