c# - asp 的 URL :Image gets messed up

标签 c# jquery asp.net html url

我正在向我的页面动态添加用户控件:

  • 当用户点击按钮时,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/

相关文章:

c# - Autofac - MVC Controller 和 Web Api Controller 的依赖注入(inject)

c# - 如何确定 C# 应用程序是从桌面还是从 cmd shell 启动的?

asp.net - iis Express 挂起

c# - 事件驱动的 TCP 客户端

c# - 图表系列标签为百分比

javascript - Highcharts 在 x 轴上多次显示额外标签

jquery - Rails 5 jQuery .ajax 方法数据格式

javascript - 无论数字是多少,我都在表单字段中输入,我希望将其存储在一个变量中。

c# - 对于包含 ASP.NET 项目的 .NET 框架解决方案,迁移到 "new project system"(PackageReference) 是否安全/可行?

c# - 无法从反序列化数据中检索键和值信息