如何避免在VB.NET中使用EVAL?
问题描述:
我想停止在我的代码中使用EVAL,并将其从所有中继器中删除。我正在从事的项目是.NET 3.5。如何避免在VB.NET中使用EVAL?
我有这个类
Public Class person
Public Name As String
Public Age As String
End Class
我使用的是共享的功能创建List(of person)
。
我有一个中继器,我将它绑定到List(of person)
。
我有中继器的ItemTemplate中部分验证码:
<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#的。我确信这是一件简单的事情,但我无法想象出我的一生。
谢谢。
答
在您的中继器上,设置ItemType。这使您可以进行强类型的数据绑定。
<asp:Repeater runat="server" ItemType="person">
您可能需要完全限定类名。
这允许你做
<ItemTemplate>
<tr>
<td><%# Item.Name %></td>
<td><%# Item.Age %></td>
</tr>
</ItemTemplate>
荡。我没有这个选项。我在.net 3.5上。我要更新这个问题。不过谢谢。 – NinjaBomb
@NinjaBomb在这种情况下,我会从.NET 3.5升级到最高优先级。 – mason
它在名单上!谢谢。 – NinjaBomb