asp.net-mvc - asp.net mvc独立的ascx控制如何最有效地链接(css和js)

原文 标签 asp.net-mvc methodology

我需要一些建议。
(对于那些在我重新编辑此问题之前已经读过此书的人)

我已经开发了一些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

相关文章:

methodology - 带有示例项目的软件开发方法

arrays - R vs. MATLAB中的高维数据结构化方法

php - MongoDB - PHP - 工厂方法实现

asp.net-mvc - 如果这样配置,asp.net RoleManager是否真的在cookie中缓存用户的角色?

asp.net-mvc - HtmlHelper扩展方法中的依赖注入(inject)?

asp.net - 如何将MVC空项目转换为Web API?

css - 如何在嵌套规则中覆盖修饰符

methodology - 选择合适的技术和环境

asp.net-mvc - 我是否需要在Web服务器上安装MVC 3/4才能运行MVC应用程序

asp.net - 从Asp.net执行SqlPS脚本