2017-01-11 3 views
0

私は以前の質問に対する回答を見て解決できなかったHtml.DropDownListと共にSelectListを使用することに問題があります。 、私のモデルから各項目をとるSelectListItemに変換します、そしてコレクションに追加SelectListでHtml.DropDownListを正しく使用するには?

Dim myItems As New Collection 
Dim thisItem As SelectListItem 

For Each responsibility In Model.Responsibilities.EBS_Resonsibility 

    thisItem = New SelectListItem 
    thisItem.Text = responsibility.RESPONSIBILITY_NAME 
    thisItem.Value = responsibility.RESPONSIBILITY_ID 
    myItems.Add(thisItem) 
Next 

は私が見るに次のコードを持っています。

その後、私はSelectListのにそのターン:

Dim myRoles As New SelectList(myRoleItems, "Value", "Text") 

そして、私のHtml.DropDownListを作成します。最後に

@Html.DropDownList("RoleList", myRoles, "Select Role") 

そしてそれを扱う:

<a href="@Url.Action("RoleHandler", "Account", New With {.RESPONSIBILITY_ID = myRoles.SelectedValue})">Search Buildings</a> 

問題は、何もありませんが通過しています。その場合

Dim myRoles As New SelectList(myRoleItems, "Value", "Text", 905) 

、905:私はSelectedValueのためのSelectListのの最後にパラメータを追加する場合、それはそうのように、そのパラメータを渡しますので、私の最後の行と私のSelectListのは、正しいことを知っています渡されます。だから、DropDownListのSelectListからValuesにアクセスするのに間違ったことをやっていることはかなり確信しています。しかし、アイテムの名前はDDLに正しく表示されるため、どこが間違っているのか分かりません。

ご協力いただければ幸いです。ありがとうございます!

+0

サイドノート: 'myRoleItems'は' IEnumerableを '(' DropDownListコントロール() 'メソッドによって必要とされるものである'新しいSelectListの(myRoleItemsを、「使用。値 "、"テキスト ")'は、最初のものと同じ別の 'IEnumerable 'を作成するのは無意味です。 –

答えて

0

アンカータグのコードには、サーバー上で実行されるC#コードがいくつかあります。ユーザーは、ドロップダウンの選択されたオプションをクライアント側で何かに変更することができるので、クライアント側のjavascriptでこれを処理する必要があります。

リンクのhref値を(ルート値を除いた)アクションメソッドのベースURLに設定し、クライアント側の動作を引き上げるために使用するIDを指定します。

@:<a id="myLink" href="@Url.Action("RoleHandler","Account")">Search Building</a> 

は今、このリンクをクリックしてイベントに耳を傾けるドロップダウンリストから選択したオプションを取得し、新しいURLを構築するためにそれを使用するためにいくつかのJavaScriptコードを持っています。

@section scripts 
    <script> 
    $(function() { 

     $("#myLink").click(function (e) { 
      e.preventDefault(); 
      var url = $(this).attr("href"); 
      url = url + "?RESPONSIBILITY_ID ="+$("#RoleList").val(); 
      window.location.href = url; 
     }); 

    }); 
</script> 
End Section 

はまた、あなたが本当にあなたのDropDownListヘルパーメソッドにSelectListItemのリストを渡すことができ、新しいSelectListのオブジェクトを作成する必要はありません。

Dim list = New List(Of SelectListItem)() From { 
    New SelectListItem() With { 
         .Value = "a", 
         .Text = "a" 
    }, 
    New SelectListItem() With { 
         .Value = "b", 
         .Text = "b" 
    } 
} 

@Html.DropDownList("RoleList", list, "Select Role") 
関連する問題