【问题标题】:Ajax sends empty parameters to controllerAjax 向控制器发送空参数
【发布时间】:2020-08-19 23:17:14
【问题描述】:

所以我正在从我的视图中对我的控制器中的一个方法进行ajax 调用,但它一直在发送空参数。我在控制台中打印值,值在那里,正确的但控制器的输入参数为空。

在我看来,这是我的ajax

@model ModelLayer.Models.NotificationModel

@(Html.Kendo().Grid<ModelLayer.Models.TableNotificationModel>()
        .Name("successfullData")
        .ToolBar(e =>
        {
           e.Custom().Text("Зачувај").HtmlAttributes(new { id = "customSaveButton", @class = "floatRight" });
        })
        //code shortened for brevity

$("#successfullData").on("click", "#customSaveButton", function () {
        var model = JSON.parse('@Html.Raw(Json.Serialize(Model?.TableNotificationModel))');
        var saveType = 1;
        console.log("model", model)
        console.log("saveType", saveType)

        $.ajax({
            url: '@Url.Action("SaveFile", "Upload")',
            data: model,
            saveType: saveType
        })
    });

我在单击 Kendo 网格按钮时调用该函数并将数据发送到控制器。我在控制台中有正确的数据

但我的控制员却另有说法

模型为空,saveType 为 0。我在这里缺少什么?为什么我发送的是空参数?

【问题讨论】:

  • 我认为这里可能存在几个问题。首先你能展示更多的 C# 方法吗?在默认情况下执行 GET 的 AJAX 中,您的控制器将需要匹配相同的 HTTP 动词。如果它们都是 GET,它会将 Model 的内容附加到查询字符串中,并且您不会有一个名为 model 的对象,而是 model 的所有属性
  • 请添加您的评论作为答案,我忘记了ajax 中的method 属性。我添加了它并发送了正确的参数 - @dbmuller

标签: javascript c# ajax


【解决方案1】:

在默认情况下执行 GET 的 AJAX 中,您的控制器将需要匹配相同的 HTTP 动词。如果它们都是 GET,它会将 Model 的内容附加到查询字符串中,并且您不会有一个名为 model 的对象,而是 model 的所有属性

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 2021-02-14
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 2013-05-03
    • 2010-12-05
    • 2019-12-28
    • 2023-03-20
    相关资源
    最近更新 更多