当网站托管在子目录中时,〜不解析为Request.ApplicationPath

时间:2012-06-14 13:01:56

标签: asp.net

我有一个asp.net网站,它位于root的子目录中。

示例:http:localhost:6464/MyWebsitehttp://www.myDomain.com/MySite

当我使用ASP.Net Image按钮并将其ImageUrl属性设置为"~/images/myimage.png"时,它不会解析为http:localhost:6464/MyWebsite/images/myimage.png而是解析为http:localhost:6464/images/myimage.png,并且我收到错误200 (未找到资源)。

我在某地读到,对于服务器控件,我必须使用“〜”。

我目前使用的一个解决方案是,在webconfig中我为BaseURL创建一个条目并将其设置为

http:localhost:6464/MyWebsite/

然后将其用作<asp:ImageButton ID="imgButton2" ImageURL="<%=Context.Items["baseURL"]%>images/myimage.png" runat="server"/>

这有效但我正在检查是否有更优雅的方式。

更新:

那么,如何解析应用程序/虚拟目录的根目录 感谢。

1 个答案:

答案 0 :(得分:0)

我以这种方式解决了类似问题:

在site.master的代码隐藏页面中我添加了:

protected void Page_Load(object sender, EventArgs e) {
    this.Page.DataBind();
    ...
}

所有服务器端控件都应该具有“〜/”。 E.g:

<asp:Image ID="ImageSpace" runat="server" ImageUrl="~/images/spacer.gif" />
<asp:HyperLink ID="LinkMenuXXX" runat="server" NavigateUrl="~/xxx.aspx"/>

必需的客户端控件具有以下模型(例如):

<script type="text/javascript" src='<%# ResolveUrl("~/")%>js/cookie/jquery.cookie.js'></script>

我希望它有所帮助