DataBinder.Eval в C#

Привет кто-нибудь знает, как использовать databinder.eval в C#

На самом деле я пробовал это

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

это показывает ошибку. Что не так с этим?

4 ответа

Например, на странице дизайна вы можете использовать как:

<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
}

Вы не можете использовать Eval в коде за страницей aspx.

этот:

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

должно быть так:

lnkName.CommandArgument = YOUR_OBJECT_PROPERTY_HERE;

Чтобы заполнить YOUR_OBJECT_PROPERTY_HERE, вам нужно либо указать object.property и т. Д., Как обычно, в коде C#, либо вам придется использовать отражение, чтобы получить значение свойства из объекта (что eval делает для вас).

Вот ссылка, показывающая, как использовать отражение для получения информации о свойствах от объекта. Вы можете использовать его для дублирования работы eval, если вам необходимо: https://web.archive.org/web/1/http://articles.techrepublic.com.com/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

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowIndex > -1)
    {

        string h = DataBinder.Eval(e.Row.DataItem, "ColumnName").ToString();
    }
}

Вы должны использовать выражение Eval и <% %> в коде *.aspx не с кодом C#.

Другие вопросы по тегам