我想停止在我的代码中到处使用EVAL并将其从所有中继器中删除。我正在研究的项目是在.NET 3.5中。
我有这个班级
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#的。我确信这是一件我想念的简单事,但我无法理解我的生活。
感谢。
答案 0 :(得分:0)
在您的中继器上,设置ItemType。这允许您具有强类型数据绑定。
<asp:Repeater runat="server" ItemType="person">
您可能需要完全限定班级名称。
这允许你做
<ItemTemplate>
<tr>
<td><%# Item.Name %></td>
<td><%# Item.Age %></td>
</tr>
</ItemTemplate>