如何将Container.DataItem作为参数传递?

Bri*_*ang 9 c# asp.net

我正在使用转发器控件,我试图传递一个参数:

<%# SomeFunction( DataBinder.Eval(Container.DataItem, "Id") ) %>
Run Code Online (Sandbox Code Playgroud)

它基本上是在呼唤:

public string SomeFunction(long id) {

    return "Hello";        

}
Run Code Online (Sandbox Code Playgroud)

因为我收到错误,我无法实现此目的:

错误CS1502:最好的重载方法匹配... SomeFunction(long id)...有一些无效的参数.

有任何想法吗?

Kie*_*ron 10

你需要将结果转换为long,所以:

<%# SomeFunction( (long)DataBinder.Eval(Container.DataItem, "Id") ) %>
Run Code Online (Sandbox Code Playgroud)

另一种方法是做这样的事情:

<%# SomeFunction(Container.DataItem) %>
Run Code Online (Sandbox Code Playgroud)

和...

public string SomeFunction(object dataItem) {
    var typedDataItem = (TYPED_DATA_ITEM_TYPE)dataItem;

    // DO STUFF HERE WITH THE TYPED DATA ITEM

    return "Hello";        

}
Run Code Online (Sandbox Code Playgroud)

这至少允许您使用数据项(DataRows等)中的多个值.