2011-08-06 5 views
0

にHTML.DropDownList値の配列をポストする私の見解では、forループでドロップダウンリストを動的に作成しています。一意のid値に同じ名前の値を使用します。私はこのようなドロップダウンの値を取得することができますポストのための私のコントローラのアクションメソッドでコントローラアクションメソッド

@foreach(var item in Model.Items) 
{ 
    @Html.DropDownList("Items" Model.GenerateSelectList(item.id), new { id = item.id }) 
} 

[HttpPost] 
[ValidateAntiForgeryToken] 
[Authorize] 
public ActionResult ClassicLineup(IList<int> items) 
{ 
} 

私はBOTHドロップダウンIDと関連付けられた値を取得する方法を見つけ出すことはできません。 ...

おかげで、それは簡単であるべきよう

は思えるが、それは私が困惑しています。

+0

あなたは選択したアイテムのみを取得することに興味がありますか? –

+0

正しい私は選択した値とそれに対応するドロップダウンIDを得ることだけに気をつけます –

答えて

0

この

<script type="text/javascript"> 
    $('#MyDropDownList').change(function() { 
     $('#ddSelectedName').val($(this).find(':selected').text()); 
    }); 
</script> 

コントローラを追加しますform.key)とドロップダウン値(form.key.value)を返します。

MVCにドロップダウン値とIDをコントローラアクションパラメータのコレクションにバインドさせる簡単な方法はありません。

2

フォーム送信ブラウザでは、選択した値のドロップダウンが送信されるため、選択した項目のテキストを読み取るメカニズムはありませんが、作成することはできます。

以下のコードでは、現在選択されている項目のテキストを格納する非表示入力を作成し、フォーム投稿時にサーバーに送信します。

以下のリストは、コントローラまたはビューで作成できます(コントローラの中で優先されます)。

var items= (from item in Model.Items 
       select new SelectListItem 
       { 
        Value= item.DisplayProperty 
        Text= item.Value 
       }).toList(); 


<form action="controller/test"> 

@*This will create DD*@ 
@Html.DropDownList("MyDropDownList", items) 

@*Hidden input*@ 
<input type="hidden" id="ddSelectedName" name="ddSelectedName" /> 

<br> 
    <input type="submit" value="submit"/> 
    </form> 

はウルのコードではjQueryをインクルードして、(私はちょうどフォームコレクションをループして、ドロップダウンIDを解析することになった

public string test(string MyDropDownList, string ddSelectedName) 
{ 
    return MyDropDownList+ "--"+ddSelectedName ; 
} 
+0

私はドロップダウンのテキスト値を取得しようとしていません。選択されたドロップダウン値だけでなく、関連するhtml select id値。 paramterアクションメソッドのIListをにすると、すべての値が取得されますが、関連付けられているドロップダウンのIDはありません。 –

+0

私が言及したテストコントローラは、あなたに選択された価値のIDとテキストの両方を与えます!! –

関連する問題