【问题标题】:Url for the asp:Image gets messed upasp 的网址:图片搞砸了
【发布时间】: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


【解决方案1】:

当用户控件被添加到 aspx 网页时,它会查找相对于您的网页路径的图像,带有正斜杠的两个点 ../ 表示后退 1 步,在您的情况下,它会搜索 ../images/delete.gif 这是对MyPage.aspx 无效,因为您的网页和images 文件夹都在root 下。

要么将你的用户控件和网页放在同一个文件夹中,要么将路径更改为images/delete.gif

编辑:以下层次结构不需要您将用户控件/网页放在同一文件夹中或将路径更改为images 文件夹。

根:

  • 图片

    删除.gif ...

  • 网页控件

    MyWebControl.ascx ...

  • 网页

    我的页面.aspx

【讨论】:

    【解决方案2】:

    现在我只是为我的 web 控件添加了一个覆盖方法:

    protected override void OnPreRender(EventArgs e)
    {
          base.OnPreRender(e);
    
          // Don't use ImageUrl, set fixed src attribute.
          imgDelete.Attributes["src"] = "images/delete.gif";
    }
    

    缺点是,图像仅显示在位于根文件夹中的页面上,但这对我有用。

    另一种方法是使用 jquery livequery 插件:

    $('.Delete').livequery(function () {
        $(this).attr('src', 'images/delete.gif');
    });
    

    编辑 - 我也可以将 CssClass 设置为图像按钮并使用 css 设置 background: url(../images/add.gif)...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多