我的母版页上有一个像这样的图像:
<img src="../Images/logo.jpg" />
母版页位于Root/MasterPages/masterpage.master
现在,此图片显示在Root/SomeDir/ContentPage.aspx
的内容页面中,
但它不适用于Root/SomeDir1/SomeDir2/ContentPage.aspx
中的内容页面。为什么呢?
母版页HTML
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
<style type="text/css">
#div_Main
{
height: 825px;
width: 1022px;
top: 16px;
left: 77px;
position: absolute;
margin-left: 14px;
}
#div_LeftPanel
{
width: 299px;
top: 179px;
left: 2px;
position: absolute;
height: 641px;
background-color: #7E8387;
}
#div_Content
{
width: 716px;
top: 180px;
left: 303px;
position: absolute;
height: 638px;
}
#div_Header
{
top: 0px;
left: 0px;
position: absolute;
height: 176px;
width: 1022px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div id="div_Main">
<div id="div_Header">
<img src="../Images/logo.jpg" />
</div>
<div id="div_Content">
<asp:ContentPlaceHolder ID="cph_WorkingArea" runat="server">
</asp:ContentPlaceHolder>
</div>
<div id="div_LeftPanel">
<br />
<br />
<br />
<br />
<br />
<asp:LinkButton
ID="lnkbtn_JObAspirantsList" runat="server"
style="color: #CFCFF3; font-size: xx-large"
onclick="lnkbtn_JObAspirantsList_Click">Job Aspirants List</asp:LinkButton>
<br />
<br />
<br />
<br />
<br />
<br />
<asp:LinkButton ID="lnkbtn_ERFList" runat="server"
style="color: #CFCFF3; font-size: xx-large" onclick="lnkbtn_ERFList_Click">ERF List</asp:LinkButton>
<br />
<br />
<br />
<br />
<br />
<br />
<asp:LinkButton ID="lnkbtn_InterviewFeedbackList" runat="server"
style="color: #CFCFF3; font-size: xx-large"
onclick="lnkbtn_InterviewFeedbackList_Click">Interview FeedbackList</asp:LinkButton>
<br />
<br />
<br />
<br />
<br />
<br />
<asp:LinkButton ID="lnkbtn_NewEmployeeList" runat="server"
style="color: #CFCFF3; font-size: xx-large"
onclick="lnkbtn_NewEmployeeList_Click">New Employees List</asp:LinkButton>
<br />
<br />
<br />
<asp:LinkButton ID="LinkButton1" runat="server" style="color: #CFCFF3; font-size: xx-large" onclick="LinkButton1_Click">LogOut</asp:LinkButton>
<br />
<br />
</div>
</div>
</form>
</body>
</html>
内容页面HTML
<%@ Page Language="C#" MasterPageFile="~/MasterPages/HRMaster.Master" AutoEventWireup="true" CodeBehind="ERF.aspx.cs" Inherits="StarTechnologies.ERF" Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="cph_WorkingArea" runat="server">
<p>
<br />
<asp:GridView ID="GridView1" runat="server" Height="212px"
onselectedindexchanged="GridView1_SelectedIndexChanged" Width="434px">
</asp:GridView>
</p>
<br />
</asp:Content>
答案 0 :(得分:9)
RPM1984几乎是正确的。您应该使用~
来指示相对于应用程序根目录的路径。但是,您应该将其转换为浏览器可以理解的路径。如果您正在使用自动完成的像Image这样的ASP.NET控件。如果您使用的是HTML代码(不含runat="server"
),则必须使用Page.ResolveClientUrl()手动翻译路径。
例如:
<img src="<%= ResolveClientUrl( "~/Images/logo.jpg" ) %>"/>
但是,在这种情况下,您可能最好使用Image控件:
<asp:Image runat="server" ImageUrl="~/Images/logo.jpg"/>
答案 1 :(得分:2)
尽量不要使用相对路径。
使用绝对:
<img src="~/Images/logo.jpg" />
假设“Images”是Web应用程序根目录下的文件夹。
关于母版页要记住的事情是它们确实是某种方式的语法糖(类似于部分类)也就是说,当你将图像放在MasterPage中时,.NET CLR会使用主信息创建内容页面 - 因此图像引用将不变。
来自主人的 ../ Images ,来自其放置的内容的 ../ Images 。
换句话说,对于客户端,只有一个页面(ASPX - 内容页面),它不像创建了一个保留URL引用的神奇父页面。
HTH
答案 2 :(得分:0)
我遇到了同样的问题。
我的母版页面内容没有显示,但网页表单的内容却没有显示。 发生的事情是内容页面正在覆盖母版页的内容。
我解决了在MasterPage中创建一个新的ContentPlaceHolder,ID =&#34;示例&#34;。
然后在Web表单中,我将 ContentPlaceholderID =&#34; OlderID&#34; 更改为 ContentPlacerHolderID =&#34;示例&#34; 。