【问题标题】:asp .net mvc postdata always 0 in controllerasp .net mvc postdata 在控制器中始终为 0
【发布时间】:2019-12-16 21:48:07
【问题描述】:

我有非常简单的代码(asp .net mvc c#),但无法让它工作。 companyId 始终为零,而布尔值正确返回。我的 postdata 是名为 SomeObj 的类,具有 ff 属性

public bool isSomeBoolean1 { get; set; }
        public bool isSomeBoolean2 { get; set; }
        public bool isSomeBoolean3{ get; set; }
        public int CompanyId { get; set; }

js:

var formData = formModule.createFormData(containerSelector + someContainer, false);
        formData.append("companyId", $("#myCompanyId").val());

        var promise = baseAjaxWithUpload('/SomeController/SomeAction', 'POST', formData).execute();

        promise.done(function (operationStatus) {
            if (operationStatus.isSuccess) {

            }


        });

布尔属性根据我在表单中的输入正确返回,但不是 CompanyId。我已经尝试将它包装在 JSON.stringify 中,制作 companyId 字符串类型,在传递之前将其放回 int 但 parseInt(CompanyId) 。我还将“CompanyId”设置为“companyId”,但没有任何效果。

当我将其更改为该拼写时,我确保 formdata 具有我在控制台 formData.get("CompanyId") 或 formData.get("companyId") 中键入的值,两者都有值,但在控制器中变为零。

我也试过这样做:

var data = {
            CompanyId: $("#myCompanyId").val(),
            isSomeBoolean1 : true,
            isSomeBoolean2 : true,
            isSomeBoolean2: false,

        }

 var promise = baseAjaxWithUpload('/SomeController/SomeAction', 'POST', JSON.stringify(data) ).execute();

所有布尔值都像 formData 一样在控制器中正确传递,但不是 companyid。它始终为 0;

这是我使用它的控制器。

[HttpPost]
public ActionResult SomAction(SomeObj  someObj )
{

}

我还尝试通过添加一个名为 CompanyIdString 且类型为 string 的属性来隔离问题,然后输入像这样的硬编码值 formData.append("companyIdString", "test"),并尝试通过 get 来查看该值,然后有,但该字符串在控制器中返回 null。我还尝试了大写拼写。

我的意思是我一直在整个应用程序中传递 companyId,直到现在才出现问题。我错过了什么?

【问题讨论】:

  • 我想通了,这么愚蠢的错误。 formData.append("SomeObj.CompanyId", 1) 成功了。下面的答案与 BaseAjaxWithFileUpload 中调用的答案相同,所以我知道结果是一样的。 tnx.

标签: asp.net-mvc controller form-data


【解决方案1】:

您可以尝试在 AJAX 调用中使用 application/x-www-form-urlencoded 内容类型:

var data = {
        CompanyId: $("#myCompanyId").val(),
        isSomeBoolean1 : true,
        isSomeBoolean2 : true,
        isSomeBoolean2: false,

    }

 $.ajax({
 url: 'myUrl',
 type: "POST",
 contentType: 'application/x-www-form-urlencoded',
 data: data,
 success: function (result) {
     console.log(result);
 }

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    相关资源
    最近更新 更多