母版页,路径和一点ContentPlaceHolder

时间:2012-06-05 17:12:43

标签: asp.net master-pages

我是ASP.Net的新手。实际上是ASP时期的新手。如果非常明显,请原谅我的无知。

我过去常常在Master页面中使用我的代码,但是如果ContenPlaceHolder中的文本被替换为提供的页面,则会更改它。

<head Runat="server">
    <title><asp:ContentPlaceHolder ID="title" Runat="server"></asp:ContentPlaceHolder></title>
    <asp:ContentPlaceHolder ID="stylesheets" Runat="server">
        <link rel="stylesheet" type="text/css" href="s/main.css" />
    </asp:ContentPlaceHolder>
    <asp:ContentPlaceHolder ID="scripts" Runat="server">
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <!--[if lt IE 9]>
        <script type="text/javascript" src="js/html5.js"></script>
        <![endif]-->
        <script type="text/javascript" src="js/slideshow.js"></script>
    </asp:ContentPlaceHolder>
</head>

它产生了:

<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="s/main.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

现在,当我将其更改为此时,它决定解决我的href属性。

<head Runat="server">
    <title><asp:ContentPlaceHolder ID="title" Runat="server"></asp:ContentPlaceHolder></title>
    <link rel="stylesheet" type="text/css" href="s/main.css" />
    <asp:ContentPlaceHolder ID="stylesheets" Runat="server"></asp:ContentPlaceHolder>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <asp:ContentPlaceHolder ID="scripts" Runat="server"></asp:ContentPlaceHolder>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

<head Runat="server">
    <title><asp:ContentPlaceHolder ID="title" Runat="server"></asp:ContentPlaceHolder></title>
    <link rel="stylesheet" type="text/css" href="./s/main.css" />
    <asp:ContentPlaceHolder ID="stylesheets" Runat="server"></asp:ContentPlaceHolder>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <asp:ContentPlaceHolder ID="scripts" Runat="server"></asp:ContentPlaceHolder>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

成了

<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="masters/s/main.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

现在,经过对这里和我的书中的一些阅读后,我想出了这个也是不对的。

<head Runat="server">
    <title><asp:ContentPlaceHolder ID="title" Runat="server"></asp:ContentPlaceHolder></title>
    <link rel="stylesheet" type="text/css" href="~/s/main.css" />
    <asp:ContentPlaceHolder ID="stylesheets" Runat="server"></asp:ContentPlaceHolder>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <asp:ContentPlaceHolder ID="scripts" Runat="server"></asp:ContentPlaceHolder>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

制作人:

<head>
    <title></title>
    <link rel="stylesheet" type="text/css" href="../s/main.css" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
    <!--[if lt IE 9]>
    <script type="text/javascript" src="js/html5.js"></script>
    <![endif]-->
    <script type="text/javascript" src="js/slideshow.js"></script>
</head>

文件夹设置如下:

/masters/normal-page.master
/index.aspx #uses normal-page.master

现在,问题是如何禁用此行为或让它生成href="s/main.css"或同等产品?是的,显而易见的解决方案是将normal-page.master移动到根目录,但我不喜欢混乱根文件夹。

另外,如果我使用了原件并且页面为页面中的占位符提供了一些东西,那么占位符标签之间的文本会被替换还是会被附加? (这本书似乎假设我知道这一切。)

此外,我没有使用Visual Studio,也不会因为我无法证明成本合理。我正在使用Notepad ++。

1 个答案:

答案 0 :(得分:2)

有一种ResolveUrl方法可以让这很简单。试试这个,看看它是否对你有帮助:

<link href="<%= ResolveUrl("~/s/main.css")%>" rel="stylesheet" type="text/css" />

一些额外的阅读:Control.ResolveUrl Method