从MVC3中的@ Html.DropDownList的值为@Html.Hidden赋值

时间:2013-07-09 03:31:23

标签: asp.net-mvc-3

示例代码:

@Html.DropDownList("Smth_ID", (IEnumerable<SelectListItem>)ViewBag.Smth, "--Select Layer--", new { id = "list" })
@Html.Hidden("Smth_Description", <value from list above>);

@Html.DropDownList("Smth1_ID", (IEnumerable<SelectListItem>)ViewBag.Smth1, "--Select Layer--", new { id = "list1" })
@Html.Hidden("Smth1_Description", <value from the list1 above>);

我使用ViewBag将数据传递给控制器​​的视图。它有2个下拉列表,用户可以选择2个值(Smth_Description和Smth1_Description),分别对应Smth_ID和Smth1_ID。

问题是我想根据用户选择的内容从下拉列表中检索值本身。我打算使用隐藏字段,但我不确定如何将下拉列表中的选定值绑定到各个隐藏字段。

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

要解决此问题,您可以

  1. 对两个下拉列表使用@Html.DropDownListFor代替@Html.DropDownList。为此,您需要将viewbags更改为模型的属性。

  2. 如果您想使用ViewBag和隐藏字段,请在下拉列表的更改事件中将选定的下拉列表值分配给相应的隐藏字段。

  3. 例如:

    $('#list').change(function(){    
       $('#Smth_Description').val($('#list:selected').val());
    });
    

答案 1 :(得分:0)

我建议Ajax这样做。找到

control named =Smth1_ID

并找到了      hiddentTextField使用它ID = Smth1_Description

然后将第一个元素的值分配给隐藏在

document ready of ajax call.

或      bodyLoad()上的Javascript

 ------------------------------------------------------------------
 <script type='javascript'>
$( document ).ready(function() {
 var data = $("Smth1_ID").val();
 $("#Smth1_Description").prop("text",data.toString()) ;      
 });
 $('#Smth1_ID').change(function(){    
 $('#Smth_Description').val(this.val());
});

 </script>