2013-09-27 6 views
2

그래서 다음 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; 
     } 

    } 
+1

으로

<%#: Item.AnswerOptions %> 

교체는 내가 사용하는 생각 'DataSource' 필드에 잘못된 ASP 태그가 있습니다. 그것은'<% # Item.AnswerOptions %>'이어야합니다. 거기에는':'이 필요합니다. – debracey

+1

'<% # :'을'<% #'으로 바꾸려고 했습니까? – James

+1

예, <% # :를 <% #와 (과) 교체하는 것이 트릭을 완료 한 것으로 보입니다. 감사! – GWLlosa

답변

2

(모든 질문은에 답을해야하므로 형태의 가

이미 잘못 공식화 @ 제임스의 의견에 의해 표시하고 서버 태그를 @debracey으로

답) :

<%# Item.AnswerOptions %> 
관련 문제