【问题标题】:how to make URL using Folder/SubFolder/Controller/Action in Asp.net MVC?如何在 Asp.net MVC 中使用 Folder/SubFolder/Controller/Action 创建 URL?
【发布时间】:2015-02-17 15:17:28
【问题描述】:

如何在 Asp.net MVC 中指定像DomainName/Admin/Folder/Controller/Action/Parameters 这样的 URL?它需要路由吗?任何人有任何想法吗?请帮助我。

【问题讨论】:

  • 向我们展示您想要实现的目标以及原因的示例......请“这是紧急的”,所有的乞讨在这里都不合适。

标签: asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

路由框架不是基于文件系统的。它不知道控制器在哪个文件夹中。您可以通过区域获得您想要的部分内容,这允许您将控制器分组到一个公共目录下,但这不仅仅是一个简单的 it 目录。它有一个实际的类组件,路由框架用于创建和解释路由。例如,您可以添加一个区域,然后获取如下 URL:

/AreaName/ControllerName/ActionName/Parameters

但这是你能接受的。

您唯一的其他选择是使用自定义路由或属性路由来“伪造”您想要的 URL。换句话说,它仍然与实际的文件系统路径无关,但您可以定义路由应该以您想要的路径的静态组件作为前缀。

routes.MapRoute(
    name: "Default",
    url: "Folder/SubFolder/{controller}/{action}/{id}",
    defaults: new { 
        controller = "Home", 
        action = "Index", 
        id = UrlParameter.Optional }
);

或者使用属性路由,您可以使用RoutePrefix 属性来装饰您的控制器:

[RoutePrefix("Folder/SubFolder/Foo")]
public class FooController : Controller

【讨论】:

    【解决方案2】:
    @Url.Action("Action", "Controller", new { area = "area", class="class", etc })
    

    【讨论】:

    • 我想要像 Domain/Folder/SubFolder/Controller/ActionName/Partamers 这样的 url
    • 这将为您和 MV​​C 所理解的一样提供域。请参阅 Chris Pratts 的回答,以获得很好的解释
    • @MattBodily 你好,我需要像myportname/controllername/actionname/foldername/filename 这样的网址,我怎么得到这个?
    • 该端口应自动作为域的一部分拉出。将文件夹添加到最后会很棘手。你也许可以用@Url.Action() +“文件夹名/文件名”来做到这一点。我从来没有使用过这种结构,所以不确定。祝你好运
    【解决方案3】:

    我在我的项目中遇到过同样类型的问题。当它们保留文件夹子文件夹时,为菜单或重定向指定 href 失败。

    更好的选择是在 html 链接中带有 Url.action 的 href。

    <a class="nav-link"  href="@Url.Action("ActionmethodName", "Controller Name", new { name = "John", contact = "calgary, vancouver" })">Home</a>
    

    对 Ajax 调用使用完整路径 URL: 为 ajax 调用的 url 参数指定完整的 url。

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      • 2021-11-28
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      相关资源
      最近更新 更多