可能是我的问题很简单或者我是新手,事情是在尝试在转发器的项目数据绑定中执行以下代码时出现错误无法转换类型的对象 * System.Data.Entity.DynamicProxies.AutoPublishLog_06BC2AA20C3D11E56D78DD544C2C7E5211D828344650C93B9AA23BDEE16A6DCE'键入'System.Data.DataRowView''。*
错误行是
Dim row As System.Data.DataRowView = DirectCast(e.Item.DataItem, System.Data.DataRowView)
任何帮助,提前致谢
代码段
Protected Sub AutoPublishList_ItemDataBound(ByVal sender As Object, ByVal e As
System.Web.UI.WebControls.RepeaterItemEventArgs) Handles AutoPublishList.ItemDataBound
If e.Item.ItemType = ListItemType.AlternatingItem OrElse e.Item.ItemType = ListItemType.Item Then
Try
Dim row As System.Data.DataRowView = DirectCast(e.Item.DataItem, System.Data.DataRowView)
Dim pageID As Literal = DirectCast(e.Item.FindControl("PageID"), Literal)
If Convert.ToInt32(row("PageID")) = Business.Objects.Constants.A Then
pageID.Text = "Dummy A"
End If
If Convert.ToInt32(row("PageID")) = Business.Objects.Constants.B Then
pageID.Text = "Dummy B"
End If
Catch ex As Exception
AddErrInfo(ex)
ErrHandler(ex)
End Try
End If
End Sub
答案 0 :(得分:1)
您正在混合经典ADO.NET和实体框架对象。这是两个不同的世界,不会自动互相兼容。
EF对象是强类型对象,我建议您将e.Item.DataItem强制转换为EF类型。从您的异常消息中我怀疑EF类型名为AutoPublishLog。
尝试将其转换为此内容:
Dim row AS AutoPublishLog = DirectCast(e.Item.DataItem, AutoPublishLog)
'your code
If row.PageID = Business.Objects.Constants.A then
'your code
这应该有用(也许你需要一些名称空间或其他名称的AutoPublishLog,但是在不知道你的模型的情况下很难说出来。)
答案 1 :(得分:0)
我不知道如何使用VB.Net,但我认为你的e.Item.DataItem
不能转换为你想要的类型......我怀疑。尝试查看类型。