我正在向我的页面动态添加用户控件:
- 当用户点击按钮时,jquery ajax 方法执行,调用我的 web 方法
- 网络方法返回呈现为字符串的我的用户控件
- 在 ajax 调用的成功部分,接收到的 html 被附加到占位符
呈现我的用户控件的方法:
public static string RenderUserControlAsString(string path)
{
var page = new PageOverride();
var viewControl = (UserControl)page.LoadControl(path);
page.Controls.Add(viewControl);
var output = new StringWriter();
HttpContext.Current.Server.Execute(page, output, true);
return output.ToString();
}
这工作正常,但我的 asp:Image 元素的 ImageUrl 有问题(我的用户控件包含多个元素,而 asp:Image 只是其中之一):
<asp:Image ID="imgDelete" runat="server" ImageUrl="~/images/delete.gif" onmouseover="this.style.cursor='hand'" onmouseout="this.style.cursor='default'"/>
ImageUrl
被转换为 ../images/delete.gif
,这是不对的。实际上,ImageUrl
前面总是有两个点和一个斜杠。有什么想法可以防止这种情况发生吗?
编辑 - 项目结构:
根:
- 图像
- 删除.gif
- ...
- 网页控件
- MyWebControl.ascx
- ...
- MyWebService.asmx
- 我的页面.aspx
最佳答案
当用户控件被添加到 aspx 网页时,它会查找与您的网页路径相关的图像,带正斜杠的两个点 ../
表示返回 1 步,在您的情况下搜索对 MyPage.aspx
无效的 ../images/delete.gif
因为您的网页和 images
文件夹都在 根
。
要么将您的用户控件和网页放在同一个文件夹中,要么将路径更改为 images/delete.gif
。
编辑:以下层次结构不要求您将用户控件/网页放在同一文件夹中或更改路径到 images
文件夹。
根:
图片
删除.gif ...
网页控制
MyWebControl.ascx ...
网页
MyPage.aspx
关于c# - asp 的 URL :Image gets messed up,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10292228/