簡體   English   中英

在MVC 5中使用相對URL進行AJAX發布

[英]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.

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