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;

在视图中,我有一个操作链接和一个下拉菜单。下拉列表填充了字典的键值(在这种情况下,键是文本名称,值是 ids)

//Action link 

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

//Drop down   

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

如何通过操作链接将与下拉列表中所选名称关联的 ID 传递给控制器​​?

我尝试在带有 id 的名称旁边放置另一个下拉列表.. 但不知何故,我需要维护两个下拉列表之间的链接.. 因为我在视图中分离字典键值对以进行显示...

我可以有类似...

//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是您的 DropDown 的 ID。

或者,您可以监听changeDropdown 的事件,然后设置href链接的 value 属性。

于 2012-08-06T20:45:39.467 回答
1

我建议创建一个下拉菜单,其中选项的值等于您的 id 字段,文本等于您的姓名。您应该能够使用以下内容创建它:

控制器

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 回答