Хорошо, ASP.NET интерпретирует относительные ссылки с "точки зрения" страницы, поэтому, если страница находится в папке, относительные ссылки вашей главной страницы больше не будут работать.
Вот решение, которое яиспользуйте, оберните содержимое своей головы в пользовательский элемент управления, который выполнит ребазирование:
<asp_custom:RebasingContainer ID="mainRebase" runat="server">
</asp_custom:RebasingContainer>
для и используйте runat = server и используйте их следующим образом:
<link rel="stylesheet" type="text/css" href="~/css/reset.css"/>
Обратите внимание на "~Путь «который является ASP.NET» идет от корня ».
Для элементов управления используйте это:
[ControlBuilder(typeof(RebasingContainerBuilder)),
Designer("System.Web.UI.Design.ControlDesigner, System.Design, " +
"Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"),
ConstructorNeedsTag(false)]
public class RebasingContainer : HtmlGenericControl
{
public RebasingContainer()
{
}
protected override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
{ /*doesn't render it's own tag*/ }
protected override void RenderEndTag(System.Web.UI.HtmlTextWriter writer)
{/*doesn't render it's own tag*/}
}
Элемент управления использует следующий построитель элементов управления:
public class RebasingContainerBuilder : ControlBuilder
{
public override bool AllowWhitespaceLiterals()
{
return false;
}
public override Type GetChildControlType(string tagName, System.Collections.IDictionary attribs)
{
if (string.Equals(tagName, "link", StringComparison.OrdinalIgnoreCase))
{
return typeof(HtmlLink);
}
if (string.Equals(tagName, "script", StringComparison.OrdinalIgnoreCase)
&& attribs.Contains("src"))
{
//only rebase script tags that have a src attribute!
return typeof(HtmlScript);
}
return null;
}
}
Где сценарий:
public class HtmlScript : HtmlGenericControl
{
public HtmlScript() : base("script") { }
public HtmlScript(string tag) : base(tag) { }
public string Src
{
get
{
return this.Attributes["src"];
}
set
{
this.Attributes["src"] = value;
}
}
protected override void RenderAttributes(HtmlTextWriter writer)
{
Src = ResolveClientUrl(Src);
base.RenderAttributes(writer);
}
}
Зарегистрируйте свой элемент управления rebase клиента в web.config, и вы готовы к работе.Например:
<add assembly="__code" namespace="CustomControls" tagPrefix="asp_custom" />
, если вы используете папку AppCode.
Это решение предоставит вам время выполнения, а также поддержку времени разработки для отдельных основных и простых веб-страниц.