Call code behind method from aspx page
i have an image tag like
<asp:Image ID="ImgProduct" runat="server" ImageUrl='<%# FormatImageUrl("10")%>' />
and in code behind i have a method like
protected string FormatImageUrl(string s)
{
return "image"+s;
}
when i rum the code i am expecting that an HTML image tag with src="image10" will rend开发者_C百科er.
but nothing happens why? any clues?
i am in asp.net . not mvc
the <%# .. %>
is applied only during data binding. One solution is to manually call DataBind()
Try
protected void Page_Load(object sender, EventArgs e)
{
ImgProduct.DataBind();
}
You have to call Page.DataBind()
or Control.DataBind()
. Otherwise the <%# %> blocks will not be evaluated.
in the aspx page
<asp:Image ID="ImgProduct" runat="server" ondatabinding="ImgProduct_DataBinding" />
in the cs file use this
protected void Page_Load(object sender, EventArgs e)
{
ImgProduct.DataBind();
}
protected void ImgProduct_DataBinding(object sender, EventArgs e)
{
ImgProduct.ImageUrl = "Image pathe + name";
}
Why do all the databinding stuff just try the below.
protected void Page_Load(object sender,EventArgs e)
{
if(!IsPostBack)
{
ImgProduct.ImageUrl = FormatImageUrl("10");
}
}
protected string FormatImageUrl(string s)
{
return "image"+s;
}
I don't understand, what difference does it make for you to databind it or write the code on code behind. Saving a few key strokes?? It would be rather very easy to also watch the Object on Codebehind rather than the Data Binding expression model
精彩评论