【问题标题】:Why can the resource cannot be found?为什么找不到资源?
【发布时间】:2015-04-01 15:13:34
【问题描述】:

我有一个带有以下视图目录的 asp.net 应用程序。

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

在布局中我有同伴操作链接:

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

如果我在主页/索引页面中,它将转到主页/上传索引。但是当我输入 de url http://localhost:12345/upload/uploadindex 时,所有要上传的操作链接都有效。

如何使动作链接在其他目录中与其他控制器一起工作。

【问题讨论】:

    标签: c# asp.net razor url-routing


    【解决方案1】:

    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)以链接到 @987654332 @

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

    这将被称为

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

    这里的第三个参数是你希望请求被路由到的控制器。

    【讨论】:

    • 谢谢它现在可以工作了!,但我不明白为什么添加一个新的(空)对象可以使它工作。
    • 因为它现在使用的是四参数重载,它有一个“控制器”参数。三参数重载没有“controller”参数,只有routevalues参数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2011-10-07
    • 2012-02-18
    • 2021-09-18
    相关资源
    最近更新 更多