3

我正在使用 ASP.NET MVC3 控制器从 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--

我的控制器看起来像:

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

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

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

我尝试使用非多格式帖子,发现它适用于相同的 json。任何帮助,将不胜感激。

我看到了这些帖子:ASP.NET MVC。如何在提出我的代码时创建接受和 multipart/form-data和 HTTP 规范http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.2的 Action 方法。

4

1 回答 1

1

你要找的答案在这里

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

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

或者,如果您没有与控制器操作方法相关联的名称的有用 Content-Disposition,您可以执行以下操作:

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

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

此处进一步概述了此方法

于 2013-10-24T11:53:24.517 回答