如何避免在具有 VB.NET 的中继器中使用 EVAL
本文关键字:中继器 EVAL NET 何避免 VB | 更新日期: 2023-09-27 18:37:08
我想停止在我的代码中的任何地方使用 EVAL,并将其从所有中继器中删除。 我正在处理的项目是 .NET 3.5 中的。
我有这个课
Public Class person
Public Name As String
Public Age As String
End Class
我正在使用共享函数创建List(of person)
。
我有一个中继器,我将List(of person)
绑定到它。
我在中继器的项模板部分中有以下代码:
<ItemTemplate>
<tr>
<td><%# DirectCast(Container.DataItem, person).Name %></td>
<td><%# DirectCast(Container.DataItem, person).Age %></td>
</tr>
</ItemTemplate>
当我尝试运行我的代码时,它给了我以下错误消息:
System.InvalidCastException was unhandled by user code
Message=Unable to cast object of type 'person' to type 'person'.
Source=App_Web_2uam_1hy
StackTrace:
at ASP.test_aspx.__DataBind__control4(Object sender, EventArgs e) in c:'users'test'documents'visual studio 2013'Projects'test.aspx:line 152
at System.Web.UI.Control.OnDataBinding(EventArgs e)
at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding)
at System.Web.UI.Control.DataBind()
at System.Web.UI.Control.DataBindChildren()
InnerException:
为什么我不能把它投射到自己身上? 我在这里有点困惑,因为我可以在网上找到的所有示例都是针对 c# 的。 我确信我错过了简单的东西,但我一辈子都想不通。
谢谢。
在中继器上,设置项目类型。这允许您具有强类型数据绑定。
<asp:Repeater runat="server" ItemType="person">
您可能需要完全限定类名。
这允许您做
<ItemTemplate>
<tr>
<td><%# Item.Name %></td>
<td><%# Item.Age %></td>
</tr>
</ItemTemplate>