使用ASP.NET中的函数设置imageURL

Gli*_*kot 2 c# asp.net imagebutton

我之前在转发器中完成了这个任务并且它已经工作了.但是,我无法通过正常的webforms页面获得以下内容.图像显示为断开的链接,我在代码隐藏中的断点不会被触发.

(在aspx文件中)

<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl='<%# GetImageDirectory()%>btnRunReport.png'  />
Run Code Online (Sandbox Code Playgroud)

(代码隐藏)

public string GetImageDirectory()
{
    return "~/App_Variants/LBSX/images/";
}
Run Code Online (Sandbox Code Playgroud)

这是我尝试的第二种方法,在另一种方法中,我尝试将imagename作为字符串传递,并且它会以这种方式返回整个链接.仍然没有运气!

有什么想法吗?

谢谢!

[编辑]感谢大家的帮助.最后,在方便的提示后,我找到了一个递归片段,其功能如下:

private void UpdateImages(Control Parent)
{
    foreach (Control c in Parent.Controls)
    {
        ImageButton i = c as ImageButton;
        if (i != null)
        {
            i.ImageUrl = "~/App_Variants/LBSX/images/" + i.ImageUrl;
        }
        if (c.HasControls())
        {
            UpdateImages(c);
        }
    }
}

protected void Page_Load(object sender, EventArgs e)
{
    UpdateImages(Page);
    ...
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助别人.

干杯

Giu*_*uto 6

首先,就像Zachary提到的那样,您正在使用代码块进行数据绑定.

其次,正如您已经尝试过的那样,使用内联表达式(<%= %>)在您的情况下也不会起作用,因为您不能对服务器标记的任何属性使用内联表达式.

您可以做的是使用HTML语法定义图像按钮,省略runat="server"标记,并使用内联表达式来获取图像的URL:

<input type="image" src="<%= GetImageDirectory() %>btnRunReport.png" name="image" />
Run Code Online (Sandbox Code Playgroud)

什么内嵌式所做的是,它调用Response.Write()与价值之间<%= %>的参数,例如:<%= this.MyVar %>Response.Write(this.MyVar).