2016-01-07 172 views
0

這是我試圖從包含淘汰賽相關功能的.js文件中打網址:如何從JavaScript MVC應用程序內解決相對路徑

self.followAction = $ .resolvePath(「/人/ Follow uid =「+ data.UserId); 這裏人們是控制器和Follow是行動方法,在按鈕點擊,我想發送userId,所以我寫了這個。

從JavaScript內解決相對路徑,我寫了這個功能

// Fix for resolving relative paths from within js scripts 
$.resolvePath = function(url) 
{ 
var path = '@Request.ApplicationPath'; 
if (path != '/') return path + url; 
return url; 
}; 

但是,在按一下按鈕,我收到此錯誤:HTTP錯誤404.0 - 找不到 它正試圖在網址爲:

localhost:44305/People/@Request.ApplicationPath/People/Follow?uid=8 

我已經知道,剃鬚刀代碼沒有在js文件中解釋。 所以,我已經把這個函數的局部視圖中:

$.resolvePath = function(url) 
    { 
     var path = '@Request.ApplicationPath'; 
     if (path != '/') return path + url; 
     return url; 
    }; 

我已經打過電話本直接在佈局頭的部分是這樣的:

<head> 
<script src="~/Scripts/jquery-1.8.2.min.js" type="text/javascript"></script> 
@{ Html.RenderPartial("VirtualPathFix"); } 
</head> 

但隨後的錯誤開始顯示:

$.resolveurl: function is not defined 

如果我把這個函數直接放在腳本文件夾中的people.js文件中,那麼沒有錯誤,但隨後按下按鈕單擊,通過URL傳遞的http 404錯誤是:

localhost:44305/People/@Request.ApplicationPath/People/Follow?uid=8 

誰能幫助我out.feeling失去

我曾嘗試使用window.baseUrl在頭視圖頁面上的建議由達林:

<script type="text/javascript"> 
    window.baseUrl = '@Url.Content("~/")'; 
    </script> 

但我people.js文件無法取得此屬性,因此錯誤是:

Uncaught TypeError: window.baseUrl is not a function on line18 in people.js file. Can anyone tell me what are other things to try. 
+0

你把它放在DOM''ready'中嗎? –

+0

沒有,我想如果我在.js文件把代碼,然後剃刀將不能識別這個功能不知道往哪裏放碼現在frustated @ParthTrivedi – duke

回答

3

您可以在您的剃刀模板中準備此網址:

<head> 
    <script type="text/javascript"> 
     window.baseUrl = '@Url.Content("~/")'; 
    </script> 
</head> 

現在在你的js文件,你可以使用這個變量window.baseUrl您不再需要這個$.resolvePath功能。

+0

讓我試着thnxx的幫助爵士 – duke

+0

公衆的ActionResult關注(INT UID) { repository.Follows(User.Identity.GetUserId (),uid); return RedirectToAction(「Index」,「People」); }但它沒有觸及這個動作方法,現在應該是什麼問題。現在發送的URL是:// localhost:44305/People/Follow?uid = 8但是相同/錯誤請求的URL:/ People/Follow。如果你能幫助我很多@Darin Dimitrov – duke

+0

那麼你可能在你的路由定義中遇到了一些問題。 –

相關問題