【发布时间】: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