1

このようなキーと値のペアを辞書オブジェクトに入力しています..

      Dictionary<string, string> twoValues = new Dictionary<string, string>();

        foreach (var item in query)
        {
            twoValues.Add(item.Name, item.Id);
        }

        return twoValues;

これらの値のペアをコントローラーに返し、MVC モデル (選択リスト) に入力しています。

 model.Names = new SelectList(twoValues.Keys);
 model.Ids   = new SelectList(twoValues.Values);
 return model;

ビューには、アクション リンクとドロップダウンがあります。ドロップダウンには、ディクショナリのキー値が入力されます (この場合、キーはテキスト名で、値は ID です)

//Action link 

<%=Html.ActionLink("link", "Method", "Controller", new { Id = ??  })%>

//Drop down   

<%=Html.DropDownList("names", Model.Names, "")%>      

ドロップダウンで選択した名前に関連付けられた ID をアクション リンクを介してコントローラに渡すにはどうすればよいですか?

IDを持つ名前の横に別のドロップダウンリストを用意しようとしました..しかし、どういうわけか、2つのドロップダウン間のリンクを維持する必要があります..ビューでディクショナリキーと値のペアを表示用に分離しているため...

私は次のようなものを持つことができます...

//Action link 

<%=Html.ActionLink("link", "Method", "Controller", new { Id = ??  })%>

//Drop down   

<%=Html.DropDownList("names", Model.Names, "")%>     
<%=Html.DropDownList("ids", Model.Ids, "")%>   

選択した「名前」ドロップダウン リストのアクション リンクを介して ID を渡すにはどうすればよいですか。

4

2 に答える 2

2

clickイベントで JavaScript トリックを実行する必要があります。ドロップダウンで選択した値を読み取り、URL を作成してそこに移動します。

@Html.ActionLink("Link","Method","Controller",null,new { @class="hackLink"})

<script type="text/javascript">
  $(function(){
      $(".hackLink").click(function(e){
       e.preventDefault();   //Prevent default link click behaviour
       var item=$(this);
       var selectedVal=$("#names").val();
       var newUrl=item.attr("href")+"?id="+selectedVal;
       window.location.href=newUrl; 
      });

  });

</script>

namesがドロップダウンの ID であると仮定します。

または、ドロップダウンのイベントをリッスンしてから、リンクchangeの値属性を設定できます。href

于 2012-08-06T20:45:39.467 に答える
1

オプションの値が id フィールドに等しく、テキストが名前に等しいドロップダウンを 1 つ作成することをお勧めします。これを使用して作成できるはずです:

コントローラー

IEnumerable<SelectListItem> items = yourQueryCode.Select(c => new SelectListItem
               {
                 Value = c.ID.ToString(), 
                 Text = c.Name
               });

ViewBag.Names = items;

HTML :

<%= Html.DropDownList("Names", (IEnumerable<SelectListItem>) ViewBag.Names) %>

これにより、名前にリンクされた ID をドロップダウンの値として取得できます$('#dropdown').val()

ビューに戻るモデルの一部として SelectList を使用することをお勧めしますが、上記も同様に機能します。モデル経由で戻るように切り替えるときは、いくつかの小さな変更を加えるだけでよく、移行は非常に簡単です。うまくいけば、これが正しい方向に向かうのに十分です。

于 2012-08-06T21:08:31.433 に答える