gpt4 book ai didi

asp.net-mvc - 无法在多部分帖子中将 JSON 绑定(bind)到 ASP.NET 模型

转载 作者:行者123 更新时间:2023-12-02 17:50:01 26 4
gpt4 key购买 nike

我正在使用 ASP.NET MVC3 Controller 从 WP7 应用程序接收多部分表单帖子。帖子的格式如下:

    {User Agent stuff}
Content-Type: multipart/form-data; boundary=8cdb3c15d07d36a

--8cdb3c15d07d36a
Content-Disposition: form-data; name="user"
Content-Type: application/json

{"UserName":"ashish","Password":"ashish"}

--8cdb3c15d07d36a--

我的 Controller 看起来像:

    public class User
{
public string UserName { get; set;}
public string Password { get; set; }
}

[HttpPost]
public JsonResult CreateFeed(User user)
{
}

我看到的是 User 未绑定(bind)到 json 并且 user 对象始终为 null。我尝试制作用户字符串并使用 DataContractJsonSerializer 手动将其绑定(bind)到 User 类,它确实创建并分配了一个对象,但我很困惑为什么它不起作用。

我尝试使用非多表单帖子,发现它可以使用相同的 json。任何帮助,将不胜感激。

我看到了这些帖子:ASP.NET MVC. How to create Action method that accepts and multipart/form-data和 HTTP 规范 http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2同时提出我的代码。

最佳答案

您正在寻找的答案是 here

您必须将其作为字符串读入并在内部进行解析。所以你的操作将如下所示:

[HttpPost]
public JsonResult CreateFeed(string jsonResponse)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
User user = jsonSerializer.Deserialize<User>(jsonResponse);
}

或者,如果您没有很好用的 Content-Disposition 名称来与 Controller 操作方法关联,您可以执行如下操作:

[HttpPost]
public JsonResult CreateFeed()
{
StreamReader reader = new StreamReader(Request.InputStream);
string jsonResponse = reader.ReadToEnd();

JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
User user = jsonSerializer.Deserialize<User>(jsonResponse);
}

进一步概述了此方法 here

关于asp.net-mvc - 无法在多部分帖子中将 JSON 绑定(bind)到 ASP.NET 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139890/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com