私は妻のためにウェブサイトを作成します。彼女は教師であり、生徒のために演習を作成する可能性を持ちたいと考えています。たとえば、彼女が次の演習を作成したい場合があります。
演習1:正しい単語を使用して文を埋めます。
- 私の妻は30歳です.............
- 私はこの街に30年間住んでいます........。
私は次のモデルを持っています:
public class Exercise
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public ExerciseType Type { get; set; }
public DifficulityLevel DifficulityLevel { get; set; }
public List<ExerciseItem> Items { get; set; }
public DateTime TimeOfCreation { get; set; }
public DateTime TimeOfModification { get; set; }
}
public class ExerciseItem
{
[Key]
public Guid Id { get; set; }
public string Content { get; set; }
public List<ExerciseItemOption> Options { get; set; }
public ExerciseItemOption CorrectSelection { get; set; }
}
演習用のビューを作成します。名前、説明、難易度、タイプなどの基本的なプロパティを入力できます。次に、「運動項目を追加」ボタンを作成したいと思います。クリックすると、部分的なビュー(または他の何か)が動的に追加され、新しいExerciseItemを提供できるようになります。私はフォローしようとしました:ボタンを追加しました
@Ajax.ActionLink("Add exercise item",
"AddExerciseItem",
"Exercise", new AjaxOptions() { HttpMethod="GET", InsertionMode = InsertionMode.InsertBefore, UpdateTargetId="ExerciseItems"})
および適切なdiv:
<div id="ExerciseItems"></div>
私のアクションメソッドは次のようになります。
public ActionResult AddExerciseItem()
{
return PartialView("ExerciseItem", new ExerciseItem());
}
および部分ビュー:
@model ElangWeb.Models.ExerciseItem
<fieldset>
<legend>ExerciseItem</legend>
@Html.HiddenFor(model => model.Id)
<div class="editor-label">
@Html.DisplayNameFor(model => model.Content)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Content, new { style = "width:200px" })
</div>
</fieldset>
正常に動作します。ただし、ボタンをクリックして演習全体を作成すると、モデルにExerciseItemコレクションがありません。
public ActionResult Create(Exercise exercise)
{
using (PersistanceManager pm = new PersistanceManager())
{
exercise.Id = Guid.NewGuid();
exercise.TimeOfCreation = DateTime.Now;
exercise.TimeOfModification = DateTime.Now;
pm.ExcerciseRepository.Add(exercise);
}
return RedirectToAction("Index");
}
追加したExerciseItemオブジェクトのリストをモデルExerciseにバインドするには、コードをどのように変更する必要がありますか?