如何将下拉列表中选定的值从MVC视图发送到控制器的变量ViewData?

时间:2013-03-08 10:37:22

标签: c# javascript asp.net-mvc

我在我的应用程序中使用带有Razor的MVC4。我的控制器包含C#编码,视图包含cshtml代码。我的下拉列表看起来像这样。

@Html.DropDownListFor(x => x.StateName, Model.StateList, "--Please Select--")

我想将列表的选定值设置为Controller中的ViewData组件。让我知道这样做的可能性是什么。

2 个答案:

答案 0 :(得分:2)

您可以将所选值存储在隐藏字段中,并在控制器中获取隐藏字段值,如..

.cshtm文件

<script language="javascript" type="text/javascript">
 $(document).ready(function () {
    // storing selected value to hidden field
    $("#Selected").val($("#id").val());

    $("#id").change(function () {
        // every time dropdown changes the value will be storing in hidden field
        $("#Selected").val($("#id").val());
    });
)};
</script>

@Html.HiddenFor("Selected")
@Html.DropDownList("id", new SelectList(Model.StateList, "--Please Select--"))

...控制器

你可以读取隐藏的字段值,如..

string str = base.Request["Selected"].ToString()

答案 1 :(得分:2)

ajax呼叫的第二种方式。

<script language="javascript" type="text/javascript">
  $(document).ready(function () {
      // storing selected value to hidden field
      $("#Selected").val($("#id").val()); 

      $("#id").change(function () { 
        $.ajax({
           url: "~/ ControllerName/ActionMethodName",
           type: 'POST',
           cache: false,
           data: { Selected: $("# Selected").val() },
           success: function (data) {
             //
           }
         });
  });
  )};
</script>

控制器:

private string ActionMethodName (string Selected)
{
  String value = Selected; 
}