0

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);             
        }
    }
4

1 に答える 1

0

マークアップへの変更を最小限に抑えるオプションは、multipleプロパティをに追加することselectです。次に、アクション メソッドを a を受け入れるように変更し、params int[] idsそれらを反復処理すると、準備完了です。string最悪の場合、パラメータを a に変更してSplit()onを実行する必要があるかもしれませんが,、モデル バインダーが複数選択をサポートする方法を思い出せません。

これがニーズに合わないと思われる場合は、ASP.NET Web サイトに、 を使用してヘルパーMultiSelectListにバインドする方法を説明する記事があります。ListBox

http://www.asp.net/mvc/tutorials/javascript/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc

于 2013-05-25T07:31:37.980 に答える