0

我正在使用上传控件将文件发送到 JsonResult,但我还发送了一个 JSON 字符串作为第二个参数。这都是通过 Content-Type:multipart/form-data; 发布的。

[HttpPost]
public JsonResult UploadDocument(HttpPostedFileBase file, DocumentViewModel model)
{ ... }

我知道如果内容类型设置为 application/json,MVC 能够直接绑定到视图模型,但我认为在这种情况下我无法设置它。

有什么方法可以让 MVC 自动将我发布的 json 字符串绑定到模型?

4

2 回答 2

2

开箱即用是不可能的。您必须手动反序列化您将从请求中读取的 JSON 字符串参数到控制器操作中的视图模型,或者为其编写自定义模型绑定器来完成这项工作。理想情况下,您不应将模型数据作为 JSON 字符串发布,而应尊重您指定的内容类型:multipart/form-data。因此,处理这种情况的正确方法是修改发送请求的客户端代码,以尊重内容类型。

于 2013-10-01T10:19:09.223 回答
0

由于我无法更改内容类型,我发现这个博客正是我所需要的。

“......我们的整个请求流(数据)不会是 json 字符串。只有 guest 参数将作为 json 字符串提供......”

http://ishwor.cyberbudsonline.com/2012/07/fun-with-aspnet-mvc-3-custom-json-model-binder.html

于 2013-10-02T09:07:02.957 回答