2015-04-01 100 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