2

我对 ASP.Net 完全陌生。实际上是 ASP 时期的新手。因此,如果它非常明显,请原谅我的无知。

我曾经像这样在母版页中有我的代码,但是为了防止 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,也不会使用,因为我还不能证明成本合理。我正在使用记事本++。

4

1 回答 1

2

有一种ResolveUrl方法可以使这变得非常简单。试试这个,看看它是否对你有帮助:

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

一些附加阅读: Control.ResolveUrl 方法

于 2012-06-05T17:19:46.447 回答