簡體   English   中英

在ASP.NET MVC中發布序列化的ASP.NET模型和帶有單個Jquery Ajax調用的文件

[英]Post a serialized ASP.NET Model and a file with single Jquery Ajax call in ASP.NET MVC

我正在asp.net中開發一個電影庫應用程序。 在管理頁面中,我需要向數據庫添加電影(詳細信息,如姓名,演員,海報網址)。 而且我還需要將電影的預告片上傳到服務器中的特定文件夾。

在我的AddMovie視圖(強類型為MovieDetails模型)中,我有一個表單,可以將電影信息包含為文本,並使用文件輸入來上傳文件(電影預告片)。 在我的控制器中,我將綁定的MovieDetails模型和上傳的文件分別作為兩個參數,如下所示。

AddMovie Controller

起初我只是從我的視圖發布到這個控制器而不使用ajax。 我能夠將模型和文件送到控制器來完成我需要做的事情。

然后我轉移到ajax並嘗試在沒有頁面刷新的情況下執行此操作。

在此輸入圖像描述

現在沒有文件無法上傳。 我嘗試調試並注意到控制器的uploadFile參數為空雖然我將文件附加到視圖中的文件輸入。

有沒有辦法將模型發布到控制器並上傳文件而無需完全更改控制器並使用單個ajax調用?

或者是否可以通過模型屬性傳遞文件路徑,訪問該文件路徑並使用Ajax在控制器中上傳相關文件。

謝謝!

正如Darin所說,出於某些安全原因,沒有簡單的方法可以通過ajax處理文件上傳問題,而且您無法輕松地將文件上傳到服務器; 但好消息是有一些技巧可以解決它,例如,您可以輕松地在mvc形式中使用jquery AjaxForm ,只需稍加修改即可。 看一下jquery-ajax-form及其樣本,你會得到一些好主意。

通常,您無法使用AJAX上傳文件。 支持FormData現代瀏覽器允許您直接生成包含multipart/form-data內容的AJAX請求。 另請查看本機XMLHttpRequest對象。

但是,如果您需要支持舊版瀏覽器,則需要一些后備機制,例如隱藏的iframe或Flash電影。 blueimp這樣的插件會檢測瀏覽器功能並使用瀏覽器支持的最佳選項上傳文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM