2014-09-29 96 views
1

我想重定向到特定頁面。 對於我正在使用MVC項目的一些JavaScript功能::使用基於剃刀方法的URL

function rootUrl(url) {              
    var _rootUrl = '@Url.Content("~")'; 
    var x = url; 
    if (url.indexOf(_rootUrl) != 0) { 
     x = _rootUrl + "/" + url; 
     x = x.replace(/\/\//g, "/").replace(/\/\//g, "/"); 
    } 
    return x; 
}; 

它被用來作爲::

var url = rootUrl("Home/Company/") + $(this).val(); 
window.location.href = url; 

但是我得到錯誤的URL在瀏覽器中爲::

http://localhost:60294/Home/Company/@Url.Content(%22~%22)/Home/Company/7 

回答

1

爲什麼不使用Url.Action()直接,讓你創建的URL相對於根目錄下,而不是一個javascript函數凌亂:

var url = '@Url.Action("Company","Home")' + $(this).val(); 

這裏,首頁是控制器和公司的名字是動作它的

1

您無法在Js文件中訪問剃鬚刀。當我需要的網址,在JS中剃刀我只是定義它們在view,如:

<script> 
    var _rootUrl = '@Url.Content("~")'; 
</script> 

這將工作

+1

哪裏OP提到它在js文件中? – 2014-09-29 11:35:50

+0

我希望是在js文件中定義的,因爲在html視圖中定義一個完整的函數並不是一個好的編碼。否則剃刀不起作用,否則結果永遠不會像 「http:// localhost:60294/Home/Company/@Url.Content(%22〜%22)/ Home/Company/7」 – Balder 2014-09-29 12:21:53