如何在mvc 4中使用ajax jquery将viewbag值发布到post方法?

时间:2014-12-10 12:50:44

标签: asp.net-mvc-4

我正在ViewBag中检索我的值列表,并且我在adropdownlist中显示ViewBag个值,但我无法在HttpPost操作中发布下拉列表值。如果我正在使用按钮值传递给HttpPost动作,则ajax jquery不传递值。请帮帮我



<script type="text/javascript">
  $(document).ready(function () {
    $("#refresh").change(function (e) {
      $.ajax({
        type: "POST",
        url: '@Url.Action("update", "Home")',    
      });
      e.preventDefault();
    });
  });
</script>
&#13;
@using (Html.BeginForm())
{
  for (int i = 0; i < Model.Count(); i++)
  { 
    @Html.DropDownList("StateType", ViewBag.StateType as SelectList, new { @id = "refresh" })
  }
}
                                          
[HttpPost]  ///values are not passing here
public ActionResult update(FormCollection FC)
{
}
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

这是它应该如何运作的:

第一控制器:

public ActionResult Index()
{
// put data into Viewbag
ViewBag.StateType = methodThatReturnsSelectList();
return View();
}

使用了Index.cshtml,因为View()没有参数,控制器的名称是Index。

@using (Html.BeginForm())
    {
        for (int i = 0; i < Model.Count(); i++)
        { 

  @Html.DropDownList("StateType", ViewBag.StateType as SelectList, new { @id = "refresh" })


        }
<script type="text/javascript">
       $(document).ready(function () {
           $("#refresh").change(function (e) {
               $.ajax(
                {
                    type: "POST",
                    url: '@Url.Action("update", "Home")',
                    data: $( "#myselect" ).val();
                });

               e.preventDefault();
           });
       });
    </script>

此AJAX调用向控制器HOME和操作更新(第二个控制器)发出POST请求,并给出myselect id的值,因此在控制器中捕获它:

[HTTPOST]
public ActionResult Update(string value)
{
// doing stuff
}

我认为它会澄清怎么做,它会帮助你。