从aspx页面调用后台代码方法

5
我有一个像这样的图片标签:
<asp:Image ID="ImgProduct" runat="server"    ImageUrl='<%# FormatImageUrl("10")%>' /> 

在代码后端,我有一个像这样的方法:

protected string FormatImageUrl(string s)
{
return "image"+s;
}

当我运行代码时,我期望一个具有src="image10"的HTML图像标签将被呈现。
但是什么也没有发生。
为什么?
有任何线索吗?
我在ASP.NET中,而不是MVC。

1
请查看此线程 http://stackoverflow.com/questions/5989544/how-to-set-contol-property-in-asp-net/5989565#5989565 - Muhammad Akhtar
4个回答

2
<%# .. %> 只在数据绑定期间应用。一种解决方案是手动调用 DataBind()
尝试
protected void Page_Load(object sender, EventArgs e)
{
        ImgProduct.DataBind();
}

2

您需要调用Page.DataBind()Control.DataBind()。否则,<%# %>块将不会被评估。


1

在aspx页面中

<asp:Image ID="ImgProduct" runat="server" ondatabinding="ImgProduct_DataBinding" />

在cs文件中使用这个

protected void Page_Load(object sender, EventArgs e)
{
    ImgProduct.DataBind();

}
protected void ImgProduct_DataBinding(object sender, EventArgs e)
{
    ImgProduct.ImageUrl = "Image pathe + name";
}

1

为什么不试一下以下的数据绑定方法呢?

protected void Page_Load(object sender,EventArgs e)
{
    if(!IsPostBack)
    {
        ImgProduct.ImageUrl = FormatImageUrl("10");
    }
}

protected string FormatImageUrl(string s)
{
    return "image"+s;
}

我不明白,对你来说绑定数据或在代码后台编写代码有什么区别。省下几个按键而已吗??在代码后台也很容易观察对象,而不是使用数据绑定表达式模型。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接