ASP.NET 嵌套列表视图数据绑定
本文关键字:视图 数据绑定 列表 嵌套 NET ASP | 更新日期: 2023-09-27 18:33:09
所以我有以下 ASP.NET 代码。 本质上,我正在尝试显示一个"考试"对象。 考试由几个字符串组成,然后是嵌套的问题集合。 问题具有嵌套的答案集合。当我运行它时,我收到一个错误,说:无法将类型为"System.Char"的对象转换为类型"PracticeNet.DataEntities.Question"。
System.InvalidCastException: 无法强制转换类型的对象 "System.Char"以键入"PracticeNet.DataEntities.Question"。
第 15 行:<%#:项目。问题标题 %>
我不知道为什么会收到此错误。 我在问题类附近没有任何字符类型。 我唯一的猜测是,我不知何故从根本上误解了嵌套的 ListView 对象模型。 谁能对此透露任何见解? 完整代码如下。
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
<asp:FormView ID="examDetails" runat="server" ItemType="PracticeNet.DataEntities.Exam" SelectMethod="GetExam" RenderOuterTable="false">
<ItemTemplate>
<div>
<h1><%#:Item.ExamTitle %></h1>
<h2><%#:Item.Description %></h2>
</div>
<br />
<asp:ListView ID="examQuestions" runat="server" ItemType="PracticeNet.DataEntities.Question" DataSource="<%#:Item.Questions %>">
<ItemTemplate>
<div>
<h1><%#:Item.QuestionTitle %></h1>
<h2><%#:Item.QuestionText %></h2>
</div>
<br />
<asp:ListView ID="questionAnswers" runat="server" ItemType="PracticeNet.DataEntities.Answer" DataSource="<%#:Item.AnswerOptions %>">
<ItemTemplate>
<div>
<h1><%#:Item.AnswerText %></h1>
</div>
</ItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:FormView>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="MainContent" runat="server">
</asp:Content>
考试类别:
public class Exam
{
[Required]
public Guid ExamId
{
get;
set;
}
[Required, StringLength(512),Display(Name="Title")]
public string ExamTitle
{
get;
set;
}
[Required, StringLength(1024),Display(Name="Details")]
public string Description
{
get;
set;
}
[Required]
public virtual ICollection<Question> Questions
{
get;
set;
}
}
问题类:
public class Question
{
public Question()
{
QuestionId = Guid.NewGuid();
AnswerOptions = new List<Answer>();
}
[Key]
public Guid QuestionId
{
get;
set;
}
[Required, StringLength(120), Display(Name="Title")]
public string QuestionTitle
{
get;
set;
}
[Required,StringLength(255), Display(Name="Text")]
public string QuestionText
{
get;
set;
}
[Required]
public virtual ICollection<Answer> AnswerOptions
{
get;
set;
}
}
最后,答案类:
public class Answer
{
public Answer()
{
AnswerId = Guid.NewGuid();
}
[Key]
public Guid AnswerId
{
get;
set;
}
[Required, StringLength(250), Display(Name="Answer")]
public string AnswerText
{
get;
set;
}
}
(因为每个问题都需要答案形式的答案)
正如@James的评论和@debracey的注释已经表明的那样,您的服务器标签的表述是错误的:
取代
<%#: Item.AnswerOptions %>
跟
<%# Item.AnswerOptions %>