【问题标题】:How to call an Action method using ajax for a button click which is in partial view in MVC?如何使用 ajax 调用 Action 方法来单击 MVC 中的部分视图中的按钮?
【发布时间】:2016-08-08 12:49:35
【问题描述】:

我是 MVC 的新手。我遇到了一种情况,我需要在按钮单击时将参数从视图传递给控制器​​(按钮处于局部视图中),然后在同一页面中呈现另一个局部视图。

后续步骤:

  1. 我使用jquery按钮点击事件作为局部视图的按钮。
  2. 我进行了 ajax 调用以将参数从我的视图传递到控制器。

以下是我的代码:

$(document).on("click", "#btninPartialView", function(e){
    var data = $("txtinPartialView").val();
    $("#mainPageContainer").load("/Controller/Action", data, function(){
        $.ajax({
            //url: @Url.Action("Action", "Controller"),
            type: GET,
            data: {
                id: data
            },
            success: function(){
            }
            error: function(){
            }
        })
    }    
})

问题: 问题是,我在 action 方法中收到的数据是null

如果我遗漏了什么,请告诉我。

提前致谢。

【问题讨论】:

  • 请提供您的控制器的方法代码
  • 您能否在单击按钮后检查chrome开发人员工具控制台选项卡,如果不检查网络选项卡是否有错误,请检查ajax调用是否成功。如果不成功,给我错误..
  • 你为什么同时使用 load 和 ajax 调用

标签: c# jquery ajax asp.net-mvc asp.net-mvc-4


【解决方案1】:
$(document).on("click", "#btninPartialView", function(e){
var data = $("txtinPartialView").val();

$.ajax({
    url: "/Controller/Action",
    type: GET,
    data: {
        id: data
    },
    success: function(result){
$("#mainPageContainer").html(result);
    }
    error: function(){

})
})

这应该可行。

【讨论】:

    【解决方案2】:

    请检查您的 Action 方法接受的参数。

    例如,如果签名是

    public ActionResult Action1(string name)
    

    那么你需要将数据传递为

    var data = { name :  $("txtinPartialView").val() }
    

    【讨论】:

    • 是的,是同一个签名。我使用的签名如下: public ActionResult Action (string id){}
    【解决方案3】:

    问题是你混合了 jquery ajax 和 load 函数,load 函数在后台发送一个 ajax 调用,所以你需要使用其中一个,而不是同时使用,所以试试这样:

    $(document).on("click", "#btninPartialView", function(e){
    
            $.ajax({
                url: '@Url.Action("Action", "Controller")',
                type: GET,
                data: {
                    id: $("txtinPartialView").val()
                },
                success: function(response){
                    $("#mainPageContainer").html(response);
                },
                error: function(){
                }
            });
     });
    

    【讨论】:

    • 当我使用@Url.Action 时,它对我不起作用,但 url: "/controller/action" 工作得很好。谢谢你们..
    猜你喜欢
    • 2017-10-23
    • 2015-10-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2014-11-20
    • 1970-01-01
    • 2015-05-22
    相关资源
    最近更新 更多