2

したがって、次の ASP.NET コードがあります。基本的に、「試験」オブジェクトを表示しようとしています。試験は、いくつかの文字列と、ネストされた質問のコレクションで構成されます。質問には、ネストされた回答のコレクションがあります。実行すると、「System.Char」型のオブジェクトを「PracticeNet.DataEntities.Question」型にキャストできませんというエラーが表示されます。

System.InvalidCastException: タイプ 'System.Char' のオブジェクトをタイプ 'PracticeNet.DataEntities.Question' にキャストできません。

15行目: <%#:Item.QuestionTitle %>

このエラーが発生する理由がわかりません。Question クラスの近くに char 型はありません。私の唯一の推測は、ネストされた 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;
        }

    }
4

1 に答える 1

2

(すべての質問には答えの形で答えが必要なので)

@James と @debracey のコメントで既に示されているように、サーバー タグの形式が間違っています。

交換

<%#: Item.AnswerOptions %>

<%# Item.AnswerOptions %>
于 2015-03-12T15:51:30.233 に答える