Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 嵌套母版页和CSS文件_C#_Asp.net_Css_Master Pages_Relative Path - Fatal编程技术网

C# 嵌套母版页和CSS文件

C# 嵌套母版页和CSS文件,c#,asp.net,css,master-pages,relative-path,C#,Asp.net,Css,Master Pages,Relative Path,我有两个母版。一个main.Master和一个search.Master Master是嵌套的母版页,位于main.Master的“内部”。 为了让CSS文件与母版页一起工作,我必须放置runat=“server”atribute。像这样: <link runat="server" href="~/mp/css/master.main.css" rel="stylesheet" type="text/css" /> 并且在母版中工作得非常出色。 但是,这个嵌套母版页有自己的样式

我有两个母版。一个main.Master和一个search.Master

Master是嵌套的母版页,位于main.Master的“内部”。 为了让CSS文件与母版页一起工作,我必须放置runat=“server”atribute。像这样:

<link runat="server" href="~/mp/css/master.main.css" rel="stylesheet" type="text/css" />

并且在母版中工作得非常出色。 但是,这个嵌套母版页有自己的样式,所以我尝试再次使用runat=“server”技巧。我确保我的asp:内容位于并键入:

<link runat="server" href="~/mp/css/master.search.css" rel="stylesheet" type="text/css" />

但是,当我查看我网站的源代码时,显示的路径是:

~/mp/css/master.search.css

插入

../../mp/css/master.search.css

有人知道为什么会这样吗?如何解决这个问题

PS:我不想使用,因为它扰乱了mastrepage/主题的关系。
我不希望在服务器端代码的头中插入CSS样式表。

发生这种情况的原因是,ASPX处理器将其转换为GenericControl,除非它位于头区域,然后将其转换为HtmlLink控件

对于通用控件,它将href设置为属性。HtmlLink有一个Href属性,用于解析url

我能想到的唯一解决办法是:

  • 创建一个自定义控件,该控件使用上述方法之一呈现链接并解析url


  • 我明白你的问题了。我能想到的唯一解决办法是在代码隐藏中创建System.Web.UI.HtmlControl.HtmlLink对象,设置Href属性和rel属性(以及您想要的任何其他属性),并将其添加到head ContentPlaceHolder的控件中。

    如果您的所有CSS声明都在head标记中(直接或通过ContentPlaceHolder控件)然后您需要做的就是指定相对于母版页位置的CSS链接。URL应该自动重新设置到正确位置。您不需要runat属性,也不需要添加~。 在我的情况下,这是我在母版页中的代码:

    <link href="../../res/css/styleForThisParticularMasterPage.css" rel="stylesheet" type="text/css" />
    
    
    
    我不是ASP.NET开发人员,但为什么要将“runat=“server”??添加runat=“server”可以在将链接发送到客户端之前在服务器端解析链接您确定知道“runat=“server”属性的用途吗?