如何调用post actionresponse,将所选下拉项目作为视图中javascript的参数传递

时间:2014-10-20 12:37:55

标签: javascript c# asp.net asp.net-mvc razor

如何在asp.net,razor,mvc

中的视图中调用post actionresponse将所选下拉项作为参数传递给javascript

基本上,我确信你可以从下面的代码中看出来,我正在努力完成上述工作但没有取得多大成功。我应该改变什么才能获得成功?感谢

<script type="text/javascript">
$(function() {
    $("#mydropdown").change(function() {
        var selectedItem = $(this).val();
        $.ajax({
            url: '@Url.Action("DoStuff", "MainController")',
            type: "Post",
            data: { name: selectedItem },
            success: function () {
                alert('success');
            }
        });

    });
});

    [HttpPost]
    public ActionResult DoStuff(String Selecteditem)
    {
        CIModel CIModellList = CILHelper.ImportFunc(Selecteditem);
        return View(CIModellList);
    }

截至目前,下拉列表发生变化时没有任何反应。虽然如果我删除了ajax函数,并用警报替换它。然后出现这种情况下的警报。

此时,actionresult和控制器看起来好像它们在项目中不存在(红色),即使它们都按照规定进行命名。

c#似乎暗示操作或控制器实际上都不存在,给出错误“无法解决操作”或“无法解析控制器”

2 个答案:

答案 0 :(得分:1)

<html>
<head>
    <meta charset="utf-8">

    <link rel="stylesheet" href="//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
    <script src="//code.jquery.com/jquery-1.9.1.js"></script>
    <script src="//code.jquery.com/ui/1.10.4/jquery-ui.js"></script>

</head>
<body>

    <select id="mydropdown">
        <option  value="a">a</option>
        <option  value="b">b</option>
        <option  value="c">c</option>
        <option  value="d">d</option>
    </select>



        <script type="text/javascript">
      $(function() {
          $("#mydropdown").change(function() {
              var selectedItem = $(this).val();
              $.ajax({
                  url: '@Url.Action("DoStuff", "MainController")',
                  type: "Post",
                  data: { name: selectedItem },
                  success: function () {
                      alert('success');
                  }
              });

          });
      });
    </script>

</body>
</html>






    [HttpPost]
    public ActionResult DoStuff(string name)
    {
    CIModel CIModellList = CILHelper.ImportFunc(name);
    return View(CIModellList);
    }

答案 1 :(得分:0)

您必须将参数名称更改为SelectedItem,该名称与您的操作方法的参数匹配,并在传递之前对您的json数据进行字符串化,

JSON.stringify({ SelectedItem :selectedItem })

请参阅this以供参考。