2013-10-01 63 views
0

我正在使用上傳控件發送文件到JsonResult,但我也發送了一個JSON字符串作爲第二個參數。這全部通過Content-Type:multipart/form-data發佈;告訴模型綁定MVC操作參數是JSON

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

我知道如果內容類型設置爲應用程序/ JSON的,但我不認爲這是我能夠設置,在這種情況下MVC是能夠直接綁定到一個視圖模型。

有什麼辦法讓我得到MVC自動綁定我發佈的JSON字符串模型?

回答

2

這不可能是現成的。您將不得不手動將JSON字符串參數從控制器操作中的請求中讀取到您的視圖模型,或者爲其編寫自定義模型聯編程序來完成這項工作。理想情況下,您不應將模型數據作爲JSON字符串發佈,而應尊重您指定的內容類型:multipart/form-data。因此,處理這種情況的正確方法是修改發送請求的客戶端代碼以尊重內容類型。

+0

想通作爲很多,我想我會去定製模型活頁夾。只是想檢查我沒有重新發明輪子。非常感謝。 – 4imble

+1

好吧,實際上你會重新發明輪子,因爲如果你的客戶簡單地尊重它假裝發送的內容類型:'multipart/form-data',你將編寫自定義的反序列化器來處理協議級別可以正確處理的東西。但是,如果你無法控制這種寫得不好的客戶端代碼,那麼恐怕這是要走的路。 –