1

以下のフィールドを含むテーブルがあり、EF を使用してモデルを作成しました。

Event Details

EventMngID
Event_name
Event_location
Event_Date
EM_opt1Question1
EM_opt1Answer1
EM_opt1Question2
EM_opt1Answer2
EM_opt1Question3
EM_opt1Answer3
EM_opt1Question4
EM_opt1Answer4

イベント情報と個別の質問を表示するページがあります。ご覧のとおり、2 番目の画像には [選択肢の編集] アクション リンクがあります。編集をクリックすると、回答を表示するポップアップが表示されます。ポップアップから、値を変更して回答を保存できます。すべての変更は、カスタム質問部門の回答フィールド ドロップダウンリストに反映されます。ここでの私の問題は、テーブルに4つの回答フィールドが含まれているため、使用するメカニズムは何ですか?ポップアップ(コードの下)でこのようにする場合、Answer2 ..4はどうなりますか? そして、エラーが発生すると確信しています。この問題の解決方法について何か助けがあれば、または私の問題に関連するリンクがある場合は、私に送ってください。

     <div class="editor-field">
        <%: Html.TextBoxFor(model => model.Answer1) %>
        <%: Html.ValidationMessageFor(model => model.Answer1) %>
    </div>

イベント詳細情報

カスタム質問

ここに画像の説明を入力

4

1 に答える 1

0

私の見方では、2 つの選択肢があります。

1 つ目 (これが最良の選択肢だとは思いません) は、どの質問と回答の番号が編集されているかを把握し、クエリを動的に生成することです。Entity Framework のような ORM を使用しているかどうかはわかりませんが、使用している場合は、次のような長い if/elseif ステートメントが必要になります。

if (editing question 1)
     return (query to get question and answer 1)
else if (editing question 2)
     return (query to get question and answer 2)

一方、SQL クエリを動的に記述し、ADO.NET を使用している場合は、クエリ テキストを少し簡単に生成できます。繰り返しますが、このソリューションはお勧めしません。

より良い解決策は、データベースを正規化し、質問と回答を独自のテーブルに分離し、それらを EventDetails テーブルにまとめないようにすることです。テーブルから EM_opt1QuestionX および EM_opt1AnswerX 列をそれぞれ削除し、次のような構造を持つ新しいテーブルを作成する必要があります。

QuestionAnswer
--------
QuestionAnswerID
EventMngID
Question
Answer

次に、各質問と回答には独自の ID があり、特定のレコードを簡単にターゲットにすることができます。これにより、必要な最大数の質問を試行して推測することなく、必要な数の質問と回答を持つこともできます。

于 2012-05-21T13:39:47.620 に答える