【发布时间】:2012-05-04 18:06:11
【问题描述】:
我正在向我的页面动态添加用户控件:
- 当用户点击按钮时,jquery ajax 方法执行,它调用我的web 方法
- 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
- ...
- Web 控件
- MyWebControl.ascx
- ...
- MyWebService.asmx
- MyPage.aspx
【问题讨论】:
-
您的用户控件和页面驻留在哪些文件夹中?
-
@Coder:为问题添加了项目结构,请参阅我的编辑。
标签: c# jquery asp.net html url