从查看类似的线程开始,但是那里的解决方案对我而言不起作用。
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,等等...}。
到目前为止,我所做的所有事情不仅使我获得了新参数,而且使我也失去了原始的vm对象。
如何将对象(类)和多个基元传递给POST方法?我是否只需要创建一个包含其他参数的新DTO对象,然后发送该对象?
答案 0 :(得分:1)
在select id
from tablename
group by id
having count(value) = count(*) and
min(value) = max(value) and
min(value) = 'A';
ajax参数中,使用此
url
老实说,我不知道为什么url: '@Html.Raw(Url.Action("ComplexityTest", "Home", new { categoryId = 123, personId = 456, startDate = "2019-07-19" }))',
在.net core中不能正常工作,但是我使用Url.Action
使其起作用。 ??♂️??♂️??♂️
...但是它起作用。...
答案 1 :(得分:0)
这是在javascript中实现的方法
var test = function () {
var vm = {
"IsNew": true,
"SelectedId": 1,
"SelectedCode": null
};
var obj = { vm: vm, categoryId: 1, personId:3, startDate:new Date() };
var idk= JSON.stringify(obj);
$.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);
}
});
};
我真的不知道$("base").attr("href")
会为您带来什么,但我只是尝试了/Controller/ComplexityTest
我也没有使用[FromBody] MyViewModel vm
,而是使用MyViewModel vm