私は自分自身を少し混乱させてしまい、それから抜け出すのに苦労しています. 次のドメインモデルがあります(簡潔にするために縮小されています):
public class Questionnaire
{
public int Id { get; set; }
public IList<QuestionGroup> QuestionGroups { get; set; }
}
public class QuestionGroup
{
public int Id { get; set; }
public string Name { get; set; }
public int Order { get; set; }
public IList<Question> Questions { get; set; }
}
public class Question
{
public int Id { get; set; }
public string Text { get; set; }
public string Type { get; set; }
public string Headings { get; set; }
public IList<Answer> Answers { get; set; }
}
public class Answer
{
public int Id { get; set; }
public string Text { get; set; }
}
今、私Questionnaire
が自分のビューで自分をレンダリングしているとき、それぞれにEditorTemplatesを使用しています . レンダリングするとき、プロパティ (RadioButtonList や TextArea など) と各プロパティ (コンマ区切りの文字列) を見ています。たとえば、次のように初期化されているとしましょう。QuestionGroup
Question
Question
Type
Heading
Question
var question = new Question() {
Text = "My Question Text",
Type = "RadioButtonList",
Headings = "Very Difficult,2,3,4,Very Easy"
};
次に、次のようになります。
私のEditorTemplateで次のように生成されます。
@foreach (var heading in Model.Headings.Split(','))
{
<li>
<div>
<strong>@heading</strong>
@Html.RadioButton(Model.Id.ToString(), heading)
</div>
</li>
}
このマークアップは次のようになります。
<ul>
<li>
<div>
<strong>Very Difficult</strong>
<input id="group_question_1" name="group.question.1" type="radio" value="Very Difficult" />
</div>
</li>
<li>
<div>
<strong>2</strong>
<input id="group_question_1" name="group.question.1" type="radio" value="2" />
</div>
</li>
<li>
<div>
<strong>3</strong>
<input id="group_question_1" name="group.question.1" type="radio" value="3" />
</div>
</li>
<li>
<div>
<strong>4</strong>
<input id="group_question_1" name="group.question.1" type="radio" value="4" />
</div>
</li>
<li>
<div>
<strong>Very Easy</strong>
<input id="group_question_1" name="group.question.1" type="radio" value="Very Easy" />
</div>
</li>
</ul>
カスタム モデル バインダーを作成しましたが、ここで少し行き詰まっています。私の実際の質問は次のとおりです。
- ビュー内のドメイン モデルに基づいて選択した値を保持するにはどうすればよいですか?
- 私はこのようなものに正しいアプローチを使用していますか、それとも私は道を外れていますか?
私はまだ MVC の学習段階にあることを認めなければならないので、自分の試みから少し盲目的になる可能性があります。どんな助けでもいつも感謝しています!