그래서 다음 ASP.NET 코드가 있습니다. 기본적으로 "시험"개체를 표시하려고합니다. 시험은 몇 개의 문자열로 구성되며, 그 다음 중첩 된 질문 모음으로 구성됩니다. 질문에는 중첩 된 답변 모음이 있습니다. 실행하면 다음과 같은 오류 메시지가 나타납니다. 'System.Char'형식의 개체를 'PracticeNet.DataEntities.Question'에 입력 할 수 없습니다.ASP.NET 중첩 ListView 데이터 바인딩
System.InvalidCastException : 유형 의 개체를 캐스팅 할 수 없습니다 'System.Char' 'PracticeNet.DataEntities.Question'을 입력합니다.
행 15 : <퍼센트 번호 : Item.QuestionTitle %의>
나는이 오류가 발생하고있어 이유를 모르겠어요. 질문 클래스 근처에는 아무런 타입도 없습니다. 내 유일한 추측은 어떻게 든 내포 된 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;
}
}
으로
교체는 내가 사용하는 생각 'DataSource' 필드에 잘못된 ASP 태그가 있습니다. 그것은'<% # Item.AnswerOptions %>'이어야합니다. 거기에는':'이 필요합니다. – debracey
'<% # :'을'<% #'으로 바꾸려고 했습니까? – James
예, <% # :를 <% #와 (과) 교체하는 것이 트릭을 완료 한 것으로 보입니다. 감사! – GWLlosa