Microsoft VS 2010 C#、MVC3 を使用しています。私は多対多のリレーションシップを持つカルセルームと学生を持っているので、Classroom_Students という名前の中間テーブルを追加します。生徒をクラスルームに追加するとき、すべての生徒の名前が入ったビューでコンボ ボックスを使用し、提出するたびに 1 人ずつ選択します
@using (Html.BeginForm("AddStudentToClassroom", "Calssrooms", FormMethod.Post))
{
@Html.LabelFor(c=>c.Students, "Choose a Student")
<select name = "StudentID">
@foreach (var it in Model.Students)
{
<option value="@it.ID">@it.StudentName </option>
}
</select>
<input type="submit" value= "Add" />
}
私の質問は: このコンボの代わりに gride を使用して、多くの学生を選択したり、すべてを選択したり、すべてを選択解除して追加したりするにはどうすればよいですか? どんな助けにも感謝します。
これは私のコントローラーのコードです。ページの最初の呼び出しでは、コンボボックスに次のように入力します。
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult AddStudentToClassroom(int id) //id of calssroom
{
using (ExaminationEntities en = new ExaminationEntities())
{
ClassroomDetails ClsromView = new ClassroomDetails (); // these are for
ClsromView.Classroom = en.Classroom.Single(c => c.ID == id);// loading calssroom information and to
ClsromView.Students = en.Students.ToList(); // fill students list for the combobox
return View(ClsromView);
}
}
フォームを送信してビューを表示し、追加ボタンをクリックすると、データを保存するために次のオーバーロードされた追加関数が呼び出されます。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddStudentToClassroom(AddStudToCals ClasStud) //ClasStud is the submited data from the view
{
using (ExaminationEntities en = new ExaminationEntities())
{
ClassroomDetails ClsromView = new ClassroomDetails(); // these are for
ClsromView.Calssroom = en.Calssroom.Single(c => c.ID == ClasStud.ClassroomID); // loading calssroom information and to
ClsromView.Students = en.Student.ToList(); // fill students list for the combobox
using (ExaminationEntities exn = new ExaminationEntities())
{
Calssroom_Student To_DB_ClasStud = new Calssroom_Student (); //To_DB_ClasStud object to get the submited values and to save it in the DB
To_DB_ClasStud.CalssroomID = ClasStud.CalssroomID;
To_DB_ClasStud.StudentID = ClasStud.StdentID;
en.AddToClassroom_Student(To_DB_ClasStud);
en.SaveChanges();
}
return View(ClsromView);
}
}