将字符串数组发布到.net-core mvc
Problem:
问题:
I am trying to send an array of strings via jquery post but they dont get parsed correctly, all I get is null in the list.
我试图通过jquery post发送一个字符串数组但是它们没有被正确解析,我得到的只是列表中的null。
javascript:
JavaScript的:
var array = [];
array.push("test")
array.push("test2")
array.push("tes3")
$.post("Admin/FilteredKeys", $.param(JSON.stringify({ Ids: array, OnlyActive: true }, true)));
C# Model:
C#型号:
public class MySearch
{
public bool OnlyActive { get; set; } = true;
public List<string> Ids { get; set; }
}
action in controller:
控制器中的动作:
public async Task<IActionResult> FilteredKeys(MySearch filter)
{
var data = await _service.GetFilteredKeyTypes(filter);
return View();
}
I've googled and found that the traditional property need to be set to true but it remains the same, i tried this snippet as well:
我用谷歌搜索,发现传统的属性需要设置为true但它保持不变,我也试过这个片段:
$.ajax({
type: "POST",
url: "Admin/FilteredKeys",
data: postData,
success: function(data){
alert(data.Result);
},
dataType: "json",
traditional: true
});
This is a .net core project do additional I need to change additional paramaters somewhere?
这是一个.net核心项目我还需要在某处更改其他参数吗?
EDIT:
编辑:
forgott to add that my original attempt was like this:
forgott补充说我的原始尝试是这样的:
$.Admin.worker.postJson("Admin/FilteredKeys", JSON.stringify({ Ids: array, OnlyActive: true }), function (data) {
var t = "";
});
postJson: function (url, data, callback) {
$.LoadingOverlay("show");
$.ajax({
url: url,
type: 'POST',
data: data,
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (callback)
callback(data);
$.LoadingOverlay("hide");
},
error: function (event, jqxhr, settings, thrownError) {
//$.helpers.errorHandler($("#fileDialogErrors"), event.responseText);
$.LoadingOverlay("hide");
}
});
}
5 个解决方案
#1
2
Since I believe accepted answer is not correct - here is alternative one (similar, but not the same as other answers here). First you need to decorate model with FromBody
attribute:
因为我认为接受的答案是不正确的 - 这里是替代的答案(类似,但与此处的其他答案不同)。首先,您需要使用FromBody属性修饰模型:
public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter)
{
var data = await _service.GetFilteredKeyTypes(filter);
return View();
}
And ajax call should look like this:
并且ajax调用应该如下所示:
var array = [];
array.push("test")
array.push("test2")
array.push("test3")
$.ajax({
type: "POST",
url: "Admin/FilteredKeys",
data: JSON.stringify({ Ids: array, OnlyActive: true}),
contentType: "application/json; charset=utf-8",
success: function(data){
// ...
},
failure: function(errMsg) {
// ...
}
});
更多相关文章
- jQuery——将title属性用作悬停的文本,但只在同一父类中使用。
- Google地图信息窗口左箭头,右箭头传递TypeError:无法读取未定义的
- 3.29 学前端 jquery之操作元素之属性操作
- 获取复选框的文本属性
- 关于制作EPG界面的光标聚焦问题(我制作的是IPTV)。可是一直为光
- 将JSON结果返回给ajax请求的MVC ErrorHandling属性仅适用于local
- JQuery属性与样式――.val()和增加样式.addClass()
- 关于jQuery获取html标签自定义属性值或data值
- jquery为属性过滤器动态添加值?