Asp.net 带有外部CSS文件的用户控件
我在Web应用程序的根目录中有一个ASCX用户控件。它引用了一个样式表,比如Asp.net 带有外部CSS文件的用户控件,asp.net,css,user-controls,Asp.net,Css,User Controls,我在Web应用程序的根目录中有一个ASCX用户控件。它引用了一个样式表,比如 <link type="text/css" rel="stylesheet" href="MyStyle.css" /> 问题是,如果位于应用程序子文件夹中的任何ASPX页面引用该用户控件,则它们看不到样式表,因为href path是相对的,并且样式表保留在应用程序根目录中 除了将CSS复制到所有子文件夹中,还有什么方法可以从根目录中普遍引用它吗?我可以引用外部JavaScript,使用ScriptM
<link type="text/css" rel="stylesheet" href="MyStyle.css" />
问题是,如果位于应用程序子文件夹中的任何ASPX页面引用该用户控件,则它们看不到样式表,因为href path是相对的,并且样式表保留在应用程序根目录中
除了将CSS复制到所有子文件夹中,还有什么方法可以从根目录中普遍引用它吗?我可以引用外部JavaScript,使用ScriptManagerProxy,我可以通过ASP.NET“~/”符号指定外部JS文件的路径,该符号可以从任何位置解析为实际路径。CSS中是否存在类似的内容?您应该创建bundle.config文件,然后您可以在代码中使用它实际上您有两个选项: 1-若要将其包含在主题文件夹中,asp.net framework将自动将其包含在使用此主题的所有页面中 2-在CS代码中添加包含路径的公共变量,然后在代码中使用它,如以下代码所示:
public string basepath = "http://" + Request.Url.Authority + Request.ApplicationPath;
然后在ASP代码中使用它:
<link type="text/css" rel="stylesheet" href="<%=basepath %>MyStyle.css" />
ResolveUrl将为您转换与应用程序相关的URL
编辑:如果不想使用内联代码块
代码隐藏
protected void Page_Load(object sender, EventArgs e)
{
litStyle.Text = string.Format("<link href=\"{0}\" rel=\"stylesheet\" />", ResolveUrl("~/MyStyle.css"))
}
受保护的无效页面加载(对象发送方,事件参数e)
{
litStyle.Text=string.Format(“,ResolveUrl(~/MyStyle.css”))
}
加价
<asp:Literal ID="litStyle" runat="server"/>
正如我在评论中提到的,我不想使用块。但我也不想在代码背后指定CSS文件的URL,所以我找到了一个折衷方案。我用
runat=“server”
属性和ASP.NET-style href声明
标记:
<link rel="stylesheet" type="text/css" runat="server" id="xlinkCSS" href="~/MyStyle.CSS" />
使用这种方法,我最终可以创建一个函数,该函数接受页面作为参数,循环遍历所有“链接”标记,解析它们的URL。您能详细说明一下吗?我不喜欢使用
(这相当于Response.Write),因为它在许多情况下都会出现错误行为(例如,当用户控件位于UpdatePanel内时)如果您不想使用,那么您可以在ASCX控件的代码隐藏中使用ResolveUrl,并使用文字控件将其输出到页面。正如我在其他回答中提到的,我不喜欢使用
(这相当于Response.Write),因为在许多情况下(例如,当用户控件位于UpdatePanel内时),它可能会出现错误行为。你能详细介绍一下主题方法吗?在App_Themes文件夹中,你可以为web应用程序添加你自己的主题,这个主题包括CSS文件,一旦你将主题添加到你的页面,它会自动将这个文件夹中的所有CSS文件添加到你的页面。并使用正确的路径写入标记。非常感谢您分享此问题的解决方案。然而,我在这里有一个困惑,那就是,我知道我们将解析存储在项目子文件夹中的css路径。不过,uc1.ascs.cs
将如何利用这个xlinkCSS.Attri…
代码行-简而言之css类
。希望你理解我的困惑。谢谢大家!@NikhilG不确定您的意思,但是CSS可以在您的应用程序中的任何位置,ASCX也可以。只要您使用上面的方法来指示CSS的相对路径,后端代码就可以将其解析为实际路径。
<link rel="stylesheet" type="text/css" runat="server" id="xlinkCSS" href="~/MyStyle.CSS" />
xlinkCSS.Attributes("href") = ResolveUrl(xlinkCSS.Attributes("href"))