【问题标题】:Sending JSON string to ASP.NET Core MVC Controller将 JSON 字符串发送到 ASP.NET Core MVC 控制器
【发布时间】:2021-06-19 13:35:28
【问题描述】:

我知道如何将简单对象从 JavaScript 发送到 ASP.NET Core 控制器。但是当我有 complex 一个 JSON 字符串时我应该怎么做?

例如,我使用的是工厂库。在 JavaScript 中,所以当我序列化我当前的 Canvas 数据时,我得到如下 JSON 字符串:

问题是:我应该在我的 ASP.NET Core 应用程序中创建这个复杂的模型,还是有任何其他方法可以在我的控制器中获取这个 JSON 字符串?

我可以在我的控制器中使用一个简单的 json 字符串吗?

【问题讨论】:

    标签: json asp.net-core controller transfer


    【解决方案1】:

    这实际上取决于您的需求。

    如果您确实需要一个模型来提供一些处理数据的方法,那么创建一个模型可能是个好主意。

    如果你只需要反序列化 JSON 字符串并提取值,你可以编写你的控制器

    public ActionResult xxx ([FromBody]dynamic postData)
    

    它现在将接收请求正文作为字符串。

    请务必在您的 javascript 代码中将 content-type 设置为 application/json

    【讨论】:

    • 谢谢回复,我试试。如果我在 Home 控制器中有一个 Index 方法,我应该像这样编写 ajax 函数吗? $.ajax({ url: '/Home/Index', type: 'POST', dataType: 'application/json; charset=utf-8', data: JSON.stringify(canvas), async: false });
    • 你可以在这里api.jquery.com/jquery.ajax查看jquery中的api,它应该是contentType而不是dataType和charset。我猜你也可以跳过 JSON.stringify
    • ep,这行得通。非常感谢您的回答,而不是投反对票。
    【解决方案2】:

    最初的答案是使用动态对象来处理 JSON 字符串。

    另一种方法是将 JSON 字符串捕获为字符串。

    public IActionResult xxx(string id, [FromBody] string jsonString)
    

    然后反序列化它。

    MyData myData = new JavaScriptSerializer().Deserialize<MyData>(jsonString);
    

    【讨论】:

      猜你喜欢
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-05
      • 2020-07-13
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多