c#中的DataBinder.Eval

大家好知道如何在c#中使用databinder.eval

其实我试过这个

LinkButton lnkName = new LinkButton(); lnkName.CommandArgument = DataBinder.Eval("object",""); 

它显示错误。 这有什么不对吗?

您不能在aspx页面后面的代码中使用Eval。

这个:

 lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>"); 

应该是这样的:

 lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE; 

要填写YOUR_OBJECT_PROPERTY_HERE,您需要在C#代码中指定object.property等,或者您必须使用reflection来从对象获取属性值(这是eval为您所做的)。

这是一个链接,显示如何使用reflection从对象获取属性信息。 如果需要,您可以使用它来复制eval的工作方式: https : //web.archive.org/web/1/http : //articles.techrepublic%2ecom%2ecom/5100-10878_11-6099345.html

链接到DataBinder Eval方法: http : //msdn.microsoft.com/en-us/library/4hx47hfe.aspx

DataBinder Eval方法的工作原理(以及作者认为应该避免的原因) http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx

对于设计页面中的示例,您可以使用如下:

  

代码背后:

 int rowIndex = int.Parse(e.CommandArgument.ToString()); if (e.CommandName.Equals("Edit")) { //do something } 
 protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex > -1) { string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString(); } } 

您应该在* .aspx代码中使用Eval表达式和<% %>而不是C#代码。