次のコードを使用して、教師が、教えることができるコースのドロップダウン リストを名前別に表示できるようにします。教師がドロップダウン オプションを選択すると、選択したコースを表すデフォルト値がビューのフォームに自動入力されるようにしたいと考えています。フィールドに入力する最も効率的な方法は何ですか?
注:ドロップダウンで「カスタム」を選択した場合、ドロップダウンの下に表示されるフォームには空白だけが必要です。
コースコントローラー
// GET: /Course/ApplyToTeach
public ActionResult ApplyToTeach()
{
var course = db.CourseTemplates;
var model = new ApplyCourseViewModel
{
Courses = course.Select(x => new SelectListItem
{
Value = x.Title,
Text = x.Title,
})
};
return View(model);
}
ApplyToTeachViewModel
public class ApplyToTeachViewModel
{
[Display(Name = "selected course")]
public string SelectedCourse { get; set; }
public IEnumerable<SelectListItem> Courses { get; set; }
}
ApplyToTeach (ビュー) - 現在ここにあるのはドロップダウン メニューだけであることに注意してください。このドロップダウンの下に自動入力フォームを追加する最も効率的な方法を探しています。
<h2>ApplyToTeach</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Apply To Teach</legend>
<div class="editor-label">
Which class would you like to teach? (select "Custom" if you would like to submit a customized class)
</div>
<div class="editor-field">
@Html.DropDownListFor(x => x.SelectedCourse, Model.Courses, "Custom")
@Html.ValidationMessageFor(model => model.Courses)
</div>
<p>
<input type="submit" value="Submit" />
</p>
</fieldset>
}
ドロップダウン フィールドのデータは、次のモデルから取得されます - CourseTemplates
public class CourseTemplates
{
public int CourseTemplatesID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public int AttendingDays { get; set; } // 10, 8, 3, or custom
public int AttendanceCap { get; set; } // default of 30
public string Location { get; set; }
public string Description { get; set; }
}
フォームは実際には「CourseTemplates」モデルではなく「Course」モデルとして送信されます。「Course」モデルには、「CourseTemplates」モデルよりも多くのデータ フィールドがあります。たとえば、次のようになります。
public DateTime StartDate { get; set; }
public bool Approved { get; set; }
etc. . .
ユーザーエクスペリエンスに関して私が念頭に置いているのは、ほとんどの教師の申請プロセスを簡単にするために、管理者が事前に調べて、可能なコースオプションをいくつか追加することです(そのため、教師はすべての詳細を入力する必要がありません)。教えることを申し込んだすべてのクラス) ですが、管理者によるレビューのためにコースを送信する前に、教師が情報を編集できるようにしたいと考えています。
任意のヒント?