嗨,有人知道如何在 c# 中使用 databinder.eval
其实我试过这个
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
它显示错误。这有什么问题?
嗨,有人知道如何在 c# 中使用 databinder.eval
其实我试过这个
LinkButton lnkName = new LinkButton();
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
它显示错误。这有什么问题?
您不能在 aspx 页面后面的代码中使用 Eval。
这个:
lnkName.CommandArgument = DataBinder.Eval("object","<%#COURSE_ID%>");
应该是这样的:
lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;
要填写 YOUR_OBJECT_PROPERTY_HERE,您需要像在 C# 代码中一样指定 object.property 等,或者您必须使用反射从对象中获取属性值(这是 eval 为您所做的)。
这是一个链接,展示了如何使用反射从对象中获取属性信息。如果需要,您可以使用它来复制 eval 的工作方式:https ://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6099345.html
链接到 DataBinder 评估方法:http: //msdn.microsoft.com/en-us/library/4hx47hfe.aspx
DataBinder Eval 方法的工作原理(以及作者认为应该避免使用它的原因)http://weblogs.asp.net/jgalloway/archive/2005/09/20/425687.aspx
例如在设计页面中,您可以使用如下:
<asp:Button ID="btnEdit" CommandName="Edit"
CommandArgument='<%# DataBinder.Eval(Container, "RowIndex") %>'
CssClass="cursor_hand" runat="server" Text="Edit" />
代码背后:
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# 代码中使用。