[英]AJAX Posting with Relative URL in MVC 5
我有一個MVC 5 Web應用程序,正在使用AJAX Post調用Controller Actions。 假設我有一個名為“ Account”的控制器,以及對該控制器上名為“ Create”的操作。
為了調用該動作,我一直在使用類似於此代碼的代碼,該代碼是通過訪問“帳戶/索引GET”操作從“帳戶/索引”視圖調用的。
$.ajax({
type: "POST",
url: "/Create",
data: dataVar,
processData: false,
contentType: false,
datatype: "json",
success: function (data) {
$('#result').html(data);
}
});
這不是我的確切代碼,但這表明我的目的。 我一直在使用“ / Create”作為POST網址。 這一直很好,沒有問題,直到今天看起來似乎是隨機的,它不再能夠找到操作方法。 我使用@ Url.Action生成了正確的URL來解決此問題,這很好,但是我想知道是否確實需要這樣做。 (下面的偽代碼)
$.ajax({
type: "POST",
url: "@Url.Action("Create","Account")",
data: dataVar,
processData: false,
contentType: false,
datatype: "json",
success: function (data) {
$('#result').html(data);
}
});
我以前的方式有問題嗎,帖子的網址與當前控制器有關? 我應該避免這種情況,並且始終使用函數來生成我的網址嗎?
我特別好奇為什么“ / Create”以前可以運行,但是現在突然必須被稱為“ / Account / Create”。 有什么想法嗎? web.config中的設置或其他內容?
經過進一步的研究,似乎當我使用縮短的URL執行我的代碼時,這只是a幸。 輸入AJAX調用網址的正確方法是使用完整的相對路徑或Razor幫助器函數,如下所示:
$.ajax({
type: "POST",
url: "@Url.Action("Create","Account")",
data: dataVar,
processData: false,
contentType: false,
datatype: "json",
success: function (data) {
$('#result').html(data);
}
});
如果使用Url.Action方法,而您的JavaScript不在視圖頁面上,則必須將URL通過視圖頁面傳遞給您的javascript。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.