2009-06-16 55 views
0

我有一個窗體所有設置上傳一個文件,並且工作正常。然而,我的表單提交的方式是通過AJAX。在JS關閉的情況下,提交的按鈕仍然是一個type =「submit」。ASP.Net MVC基於文件上傳切換IsAjaxRequest屬性?

當我保存我的表單時,控制器確定IsAjaxRequest是否爲true,如果是,則返回一些JSON,否則返回一個RedirectToAction。

當我沒有在我的輸入type =「file」中指定文件路徑時,它將IsAjaxRequest視爲true。如果有一個文件路徑集,那麼它認爲IsAjaxRequest是錯誤的。它是如何確定的?

我的另一個問題是,當它認爲IsAjaxRequest是錯誤的,並做一個RedirectToAction(「索引」)我實際上並沒有發送到索引視圖。

感謝

回答

0

也許問題是不是在IsAjaxRequest()? - 它只是在傳入請求中查找["X-Requested-With"] == "XMLHttpRequest"。看看Mvc\AjaxRequestExtensions.cs

public static class AjaxRequestExtensions { 
    public static bool IsAjaxRequest(this HttpRequestBase request) { 
     if (request == null) { 
      throw new ArgumentNullException("request"); 
     } 

     return (request["X-Requested-With"] == "XMLHttpRequest") 
      || ((request.Headers != null) 
       && (request.Headers["X-Requested-With"] == "XMLHttpRequest")); 
    } 
} 
+0

如果設置filepath是請求以某種方式不附加X-Requested-With?我認爲這可能與我使用的AJAX有關http://malsup.com/jquery/form/ – Jon 2009-06-16 15:18:02