2016-06-25 11 views
0

私は2つのマルチセレクションを設定できるように、私のアプリでビューを持っています。 問題は、それらのマルチセレクトの内容をコントローラに送り返す方法です。 は、これまでのところ私が持っている:ASP MVC 6:POSTとしてmultiselectselectを送信

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary() 
    <div id="member-list"> 
     <div class="row" id="transfer"> 
      <div class="col-md-6"> 
       <select multiple="multiple" id="right-select"> 
        @foreach (var item in Model.AnotherContacts) 
        { 
         <option value="@item.Id" onclick="transfer(this)"> 
          @item.Email - @item.Name 
         </option> 
        } 
       </select> 

      </div> 
      <div class="col-md-6"> 
       <select multiple="multiple" id="left-select"> 
        @foreach (var item in Model.Group.Members) 
        { 
         <option value="@item.Contact.Id" onclick="transfer(this)"> 
          @item.Contact.Email - @item.Contact.Name 
         </option> 
        } 
       </select> 
      </div> 
     </div> 
    </div> 
     <div class="col-md-3"> 
      <input type="submit" class="btn btn-grey" value="Save" /> 
     </div> 

    </div> 

そして今:どのように、そこに項目のリストを持っているようにコントローラを書くために私は両方のmultiselectsを持っている帽子?

[HttpPost] 
    public ActionResult Manage(int id) 
    { 


     return View(); 
    } 

答えて

1

まずは、入力に名前属性を追加する必要があります。

<select multiple="multiple" id="left-select" name="leftSelect"> 
<select multiple="multiple" id="right-select" name="rightSelect"> 

次に、あなたのコントローラが

[HttpPost] 
public ActionResult Manage(int[] leftSelect, int[] rightSelect) 
{ 
    //your code 

    return View(); 
} 

お知らせとなり、メソッドのパラメータの名前は、選択リスト上のname属性と同じです。

注:私はあなたの@item.Contact.Id@item.Idはタイプ int型であると仮定。

+0

これは完全に機能しますが、選択したアイテムだけでなく、リストからすべてのアイテムを取得する可能性はありますか? –

+1

すべてのアイテムを取得するには、かみそりか ''を使用してアクションメソッドにパラメータを追加すると、 '@ Html.HiddenFor'同じ名前 –

+0

あなたのビューを設定した方法は、値がサーバー側から来ていることを示唆します。それらがDBに格納されていれば、再度値を取得できないでしょうか?クライアント側が追加の値を追加しない限り。 – ertdiddy

0

あなたのコントローラはもちろん、いくつかのパラメータが

[HttpPost] 
public ActionResult Manage(int id, int id2) 
{ 
    //your code 

    return View(); 
} 

これを期待してくださいあなたはコントローラにに送信したいのかに依存しますが、私はあなたのアイデアを得る願っています。あなたはコードを表示する必要はありませんが、文字列を返すselectListsがあると思いますが、その場合は、文字列変数を期待するようにアクションを管理するのにパラメータを変更してください。

+0

しかし、これらのIDは何ですか?私は各マルチセレクションにどれくらいのアイテムがあるのか​​わかりません –

+0

ああ、あなたはもっと先に仕事をするでしょう。異なる数のパラメータを扱うか、あるいはいくつかのパラメータをオプションにするにはあなたのアクションのオーバーロードを作成する必要があります。私は私の答えを少し変更した。 –

+0

コードに表示されているid'siは、しばしば、リスト内の項目または選択された行のインデックス番号です。したがって、情報を送信している場合複数のリストからメソッドにメソッドを送信すると、その情報が何であるかを知ることができます –

関連する問題