2014-02-05 131 views
0

我正在構建一個ASP.NET MVC應用程序與大量的jQuery Ajax調用(通常刷新列表等)。我主要使用$ .load。 rebinding/action js腳本自然在.js文件中的腳本文件夾中。在這一刻,我拿着_Layout.cshtml所有鏈接這樣通過網址爲javascript

var GET_ARTICLE_LIST = '@Url.Action("List","Article",null)'; 
    var GET_FILES_LIST = '@Url.Action("Files","Library", null)'; 

然後我用它在一個像這樣的代碼

$('.element').load(GET_ARTICLE_LIST); 

有沒有通過任何ASP.NET更好的方式MVC @ Url.Action鏈接到.js文件?

+0

嘗試做在一個控制檯,比如'的console.log(GET_ARTICLE_LIST) '看看會發生什麼 –

回答

2

您可以在URL存儲在觸發Ajax調用元素的數據屬性(即一個按鈕或鏈接等)

<input type="submit" name="submit" data-url="@Url.Action("Action", "Controller")" /> 

var url = $(your_element).data('url'); 
$('.element').load(url); 
+0

好吧,我想這是最乾淨的解決方案 – 7h4ro3

-1

您是否試圖在佈局中創建一個JavaScript函數來返回您的網址? 例如:

function GetUrl(controller, action){ 
    return '@Url.Action("ACTION", "CONTROLLER")'.replace('ACTION',action).replace('CONTROLLER',controller); 
} 

,這樣你就不必編寫這一切的URL。

+0

@ Url.Action在服務器上執行,所以這會在js執行之前很長時間執行Url.Action(「ACTION」,「CONTROLLER」),這很可能會產生錯誤 – Tewr

+0

是的,它會在服務器。那就是爲什麼我們在那之後有替代聲明。 – user1

+1

無法保證對@ Url.Action的調用結果將包含子字符串「ACTION」和/或「CONTROLLER」,這取決於您如何設置路線。 – Tewr