asp.net - 母版页、路径和一些 ContentPlaceHolder

标签 asp.net master-pages

我对 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,也不会使用,因为我还无法证明成本合理。我正在使用 Notepad++。

最佳答案

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

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

一些补充阅读:Control.ResolveUrl Method

关于asp.net - 母版页、路径和一些 ContentPlaceHolder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901757/

相关文章:

html - ASP.NET 显示的图标不同于 HTML/CSS

c# - 登录检查 : Page_Load vs Page_PreRender? asp.net

asp.net - Designer.cs 文件自动创建错误

css - 了解在 SharePoint 母版页中引用 CSS 文件的 url

asp.net - 将 MasterPage ImageButton 事件传递给内容页面

c# - 如何在代码隐藏中使用 SqlDataAdapter?

c# - 识别 linux box 上的文件更改

javascript - IE :how to get popup's opening window when using window. 打开(url)

javascript - 内容页面中的 JQuery 未执行

css - 我要更新什么文件以及如何更改左侧导航的样式?