0

这是我想要做的。我正在尝试将下拉选择的值传递给我的控制器。

我有一个这样的下拉菜单:

@Html.DropDownList("divs", null, "--Select--", new {id="divs", onchange="SelectedIndexChanged(this.value);" })  

@section Scripts 
{
  <script>

     function SelectedIndexChanged(divs) {   
         document.getElementById('divs').href = 
                  '/Controllers/MyFunction?divs=' + divs;
     }

  </script>
}

在我的控制器中,我试图获取值 div:

public MyFunction (string divs)
{
    string type = Request.QueryString["divs"];
    MessageBox.Show(type); //this is empty
}
4

2 回答 2

0

我相信这就是你想要做的。这不是一个完整的解决方案,你必须解决它。

注意:我将 jQuery 用于 javascript 部分。

行动:

public JsonResult MyFunction (string divs)
{
    return Json(divs, JsonRequestBehavior.AllowGet);
}

看法:

$(function() {
    $("#divs").changed(function() {
        $.ajax({
            url: '/controllers/myfunction'
            , cache: false
            , type: 'GET'
            , dataType: 'json'
            , data: { divs = $(this).val() }
        }).done(function (data) {
            alert(data);
        });
    });
});

您可以从下拉声明中删除该 javascript 绑定。

于 2013-09-12T18:09:09.843 回答
0

从我的头编译器输入这个,所以它可能不太正确,但应该让你更接近。

@Html.DropDownList("divs", null, "--Select--", new { id="divs"})

@section Scripts 
{
  <script>
  $(function() {
    $("#divs").change(function() {
      val selected = $(this).find(":selected").val();
      $.ajax({
        type: 'POST',
        url: '@Url.Action("MyFunction", "Controller", new { divs = selected })',
        dataType: 'json',
      });
    });
  });
  </script>
}

在您的控制器中:

public ActionResult MyFunction (string divs)
{
   ...
}
于 2013-09-12T18:02:03.137 回答