我可以将eval函数的返回值保存在变量中并在任何我想要的地方使用它吗?
我可以在<asp: ....
标签中调用它。我不能在vb方法中使用它们。有可能吗?
答案 0 :(得分:1)
Eval("foo")
是DataBinder.Eval(Container.DataItem, "foo")
的快捷方式。 Container.DataItem包含您尝试获取的实际数据,Eval()
方法仅使用反射或其他方法来允许对名称进行后期绑定。
如果您想要更好的编译时类型检查,您始终可以将Container.DataItem
转换为您想要的任何类型。
您也可以在其他地方重复使用DataBinder.Eval()
,作为使用反射的快捷方式。
您可以做的一些示例如下:
<%# DoSomethingWithData (DataBinder.Eval(Container.DataItem, "Foo")) %>
Sub DoSomethingWithData (Object data)
SomeProperty = data
DoSomethingWithData = data
End Sub
<%# DoSomethingWithDataStronglyTyped (Container.DataItem) %>
Sub DoSomethingWithDataStronglyTyped (Object data)
Dim StronglyTyped as SomeType
StronglyTyped = DirectCast (data, SomeType)
DoSomethingWithDataStronglyTyped = DoSomethingElse(StronglyTyped)
End Sub
Sub ExampleOfDataBinderEvalReuse ()
Dim StronglyTyped as SomeType
StronglyTyped = GetSomeData()
' get "Foo" property of the SomeType class
DataBinder.Eval(StronglyTyped, "Foo")
End Sub