2015-04-01 145 views
0

我有一個asp.net應用程序與以下視圖目錄。爲什麼無法找到資源?

-Account 
-Shared 
    -Layout 
-Home 
    -index 
    -about 
-upload 
    -uploadindex 
    -uploadview 
    -Uploaddelete 

在佈局我有fellowing ActionLink的:

 <li class="navbar-links"> 
@Html.ActionLink("View Uploads", "UploadIndex", "Upload", new { @class = "navbar-links" }) 
</li> 

如果我在家裏德/索引頁它會去家/ uploadIndex。但是,當我輸入de url http://localhost:12345/upload/uploadindex,那麼所有的actionlink上傳工作。

如何使動作鏈接從其他控制器的其他目錄工作。

回答

0

MVC中的鏈接(我認爲您使用的是MVC)被路由到調用視圖的控制器。默認情況下,/upload/uploadindex的鏈接將通過您的UploadController上的方法uploadindex進行處理。

但是,@Html.ActionLink("View Uploads", "UploadIndex", "Upload", new { @class = "navbar-links" })不會做你認爲它正在做的事情。解析爲https://msdn.microsoft.com/en-us/library/dd492124%28v=vs.118%29.aspx,參數Upload被理解爲參數Object routeParamters。這就產生了「電流」控制器鏈接(在你的情況Home),從「上傳」(這會轉換到一個查詢參數length與價值6)的鏈接提供給/Home/UploadIndex?length=6

你想https://msdn.microsoft.com/en-us/library/dd504972%28v=vs.118%29.aspx路線參數

這將被稱爲

@Html.ActionLink("View Uploads", "UploadIndex", "Upload", new {}, new { @class = "navbar-links" }) 

這裏的第三個參數是你想要的請求路由到控制器。

+0

Thx它的工作原理!,但我不明白爲什麼添加一個新的(空)對象使這個工程。 – user3432681 2015-04-02 10:38:46

+0

,因爲它現在使用了四個參數過載,它有一個「控制器」參數。三個參數重載沒有「控制器」參數,只是一個routevalues參數。 – Martijn 2015-04-02 12:35:29