如何在Asp.net MVC中使用Ajax来实现控制器操作?

时间:2018-02-27 13:58:41

标签: c# ajax asp.net-mvc

这里我试图删除按钮点击AJAX调用的数据。但问题是,点击按钮时,控制器动作没有被击中,即使动作的参数,即来自ajax的id有一个值。
以下是我的AJAX

<script>
 $(document).ready(function () {
    $("button#btnDeleteContestant").click(function () {
        debugger;
        var contstantId = $("#contestantId").val();
        var parameter = { id: contstantId };

        $.ajax({
            url: "/Contestant/DeleteConfirm",
            type: "POST",
            dataType: "html",
            data: parameter,
            success: function (data) {
                debugger;
                $("div.modal-content").empty();
                $("div.modal-content").html(data);
                $("#myModal").modal();

            }
        });
    });
});
</script>



以下是我在控制器中的动作

  [HttpPost]
    public ActionResult DeleteConfirm(int id)
    {
        try
        {
            _contestantService.Delete(id);
            return RedirectToAction("Index");
        }
        catch
        {
            return View();
        }
    }

2 个答案:

答案 0 :(得分:1)

我看到的唯一问题是url可能不正确,所以你可以利用Url.Action方法来处理控制器动作方法生成正确的url:< / p>

url: "@Url.Action("DeleteConfirm","Contestant")"

希望它适合你。

答案 1 :(得分:0)

现在有很多问题可能会出现问题。我建议你使用$ .post,因为它假定了一些你必须自己指定的东西。所以我建议这样做:

<manifest ...>
  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  ...
</manifest>

$ .post确保您正在使用$ .ajax时必须明确说明的表单帖子。确保您的控制器操作使用HttpPost属性进行修饰。还要确保操作的参数名称是&#34; id&#34;匹配您在JSON对象中的内容。如果您的代码已经在剃刀视图中,则应使用@ Url.Action帮助程序构建按钮单击的URL。

如果它仍然不起作用,请使用浏览器的网络工具验证点击是否实际发出请求,然后查看它发出的请求以及您获得的响应类型。

如果您想坚持使用$ .ajax,那么我认为您还需要将内容类型指定为&#39; application / json;字符集= UTF-8&#39;并将你的json字符串化:

$("button#btnDeleteContestant").click(function () {
    var contstantId = $("#contestantId").val();
    $.post('@Url.Action("DeleteConfirm","Contestant")', { id: contstantId }, function(data){
        // success handler code here...
    });
});