我有一個MVC項目,其中我有一個提交按鈕的窗體。我添加了一個攔截表單提交事件的jquery客戶端處理程序。 javascript函數調用與沒有javascript的情況下調用的相同的MVC操作。Request.IsAjaxRequest返回false
$("form[action ='/List/CreateItem']").submit(
function() {
$.post($(this).attr("action"), $(this).serialize(), function(response) { $("#results").html(response); });
return false;
}
);
在MVC的行動,是所謂的,我測試Request.IsAjaxRequest決定是否返回一個視圖或JSON結果。我的問題是,Request.IsAjaxRequest返回false,即使我知道調用是從jquery函數進行的。 (我知道這是因爲如果我註釋掉jquery函數中的$ .post行,並且只留下返回false行,則不會發生任何反應。如果我取消註釋該行,該行爲將被執行 - 但它會返回視圖,因爲IsAjaxRequest是假)。
此行是否應使Request.IsAjaxRequest爲true?
$ .post * does * set'X-Requested-With'因此'IsAjaxRequest' – 2009-11-09 19:34:09
這篇文章可能會解決你的問題:http://www.britishdeveloper.co.uk/2010/10/aspnet-mvc- isajaxrequest-jquery.html – 2013-03-27 20:32:35
我見過在通過ajax加載多個頁面部分時Request.IsAjaxRequest()隨機返回false的情況。我開始爲查詢添加'partial = 1'參數,並且'bool partial = Request.IsAjaxRequest()|| !string.IsNullOrEmpty(Request [「partial」]);'在控制器中確保在瀏覽Ajax調用和完整頁面時獲得部分頁面。 – 2013-07-18 09:13:46