【发布时间】:2019-11-28 22:01:18
【问题描述】:
从查看一个类似的线程开始,但那里的解决方案对我不起作用。
Passing multiple objects to my controller
这是我的 javascript onclick 事件:
var test = function () {
var vm = {
"IsNew": true,
"SelectedId": 1,
"SelectedCode": null
};
var idk= JSON.stringify(vm);
$.ajax({
url: $("base").attr("href") + "Controller/ComplexityTest",
method: "POST",
contentType: 'application/json',
data: idk,
success: function (msg) {
alert('success')
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Error: " + textStatus + ", " + errorThrown);
}
});
};
在我的控制器上,我有这个端点:
[HttpPost]
public async Task<IActionResult> ComplexityTest([FromBody] MyViewModel vm, long categoryId, long personId, DateTime startDate)
{
//...do work
}
为简单起见,假设这是我的模型:
public class MyViewModel
{
public bool IsNew {get; set;}
public int SelectedId {get; set;}
public string SelectedCode {get; set;}
}
在运行它时,我可以看到 vm 已正确填充。问题是我还试图填充一些额外的原语与 MyViewModel 一起发送。
我尝试在我的 vm 初始化程序中添加其他字段,并将整个内容字符串化。
我尝试将数据设置为 { "vm": idk, "categoryId": 1, etc...}。
到目前为止,我所做的一切都导致我不仅获得了新参数,而且还丢失了我原来的 vm 对象。
如何将一个对象(类)和多个原语传递给 POST 方法?我是否只需要创建一个包含附加参数的新 DTO 对象,然后发送它?
【问题讨论】:
标签: jquery ajax asp.net-mvc .net-core