我对 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/