将字符串数组发布到.net-core mvc - c#

问题:

我正在尝试通过jquery post发送一个字符串数组,但是它们没有被正确解析,我得到的只是列表中的null。

javascript:

var array = [];
array.push("test")
array.push("test2")
array.push("tes3")

$.post("Admin/FilteredKeys", $.param(JSON.stringify({ Ids: array, OnlyActive: true }, true)));

C#模型:

public class MySearch
{
    public bool OnlyActive { get; set; } = true;
    public List<string> Ids { get; set; }
}

控制器中的动作:

public async Task<IActionResult> FilteredKeys(MySearch filter)
{
    var data = await _service.GetFilteredKeyTypes(filter);
    return View();
}

我搜索了一下,发现传统属性需要设置为true,但它保持不变,我也尝试了以下代码段:

$.ajax({
    type: "POST",
    url: "Admin/FilteredKeys",
    data: postData,
    success: function(data){
        alert(data.Result);
    },
    dataType: "json",
    traditional: true
});

这是一个.net核心项目,我还需要在某个地方更改其他参数吗?

编辑:

忘记添加我的原始尝试是这样的:

$.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");
        }
    });
}

参考方案

由于我认为接受的答案不正确-这是替代方法(与此处其他答案类似,但不相同)。首先,您需要使用FromBody属性装饰模型:

public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter)
{
    var data = await _service.GetFilteredKeyTypes(filter);
    return View();
}

而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) {
        // ...
    }
});

创建文本文件并下载而不保存在ASP.net Core MVC 2.1中的服务器上 - c#

我找到了一种创建文本文件,然后立即在浏览器中下载而不将其写入常规ASP.net中的服务器的方法:Create text file and download接受的答案使用:using (StreamWriter writer = new StreamWriter(Response.OutputStream, Encoding.UTF8)) { writer.W…

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

ASP.NET MVC 5自定义登录,无需脚手架,数据库优先 - c#

我对asp.net和mvc还是很陌生,所以我正在努力学习尽可能多的知识...为此,我从头开始编写博客网站,但是我对身份验证和授权有些困惑。由于我倾向于不真正使用任何脚手架的东西,所以我首先要使用数据库,所以不希望asp.net身份为我创建表。我对散列和加盐密码很酷,并对照数据库检查用户,我遇到的麻烦是将用户设置为登录状态并检查他们应该能够访问什么。我真的很想…

.NET Core 2从内存流下载Excel文件 - c#

我当时在.NET Core项目中工作,当时我应该从记录创建电子表格文件并下载它而不将其保存在服务器中。搜索上述标题并没有多大帮助,但给出了一些指示。另外,ASP.NET中使用的大多数方法在.NET Core中均不起作用。因此,我最终可以想出一个效果很好的解决方案。我将在下面的答案中与那些愿意像我一样进行搜索的人分享。 参考方案 首先,您需要安装EPPlus.…

JS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null - javascript

JS从文本框中获取文本,传递给asp.net mvc ActionResult,但ActionResult参数显示为null我有2个文本框,由用户选择时由2个日期选择器填充,但是当我使用下面的javascript将其传递给actionresult时,虽然信息可以正确地从文本框中获取。 actionresult的参数显示为空。我该如何解决?码:@Html.La…