【问题标题】:custom routing with mvc4使用 mvc4 自定义路由
【发布时间】:2012-11-05 13:32:59
【问题描述】:

我正在实现一个具有文件夹系统的系统(用户可以拥有文件夹,并且每个文件夹中都可以再次拥有文件或文件夹)。我想根据文件夹构建 URL。假设用户有一个文件夹“Folder1”,其中还有另一个文件夹“Folder2”。当我在 Folder1 中时,我希望 Url 看起来像“Home/Folder1”,当用户单击“Folder1”中的“Folder2”时,Url 应该看起来像“Home/Folder1/Folder2”,它可以永远这样: )

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//   THIS IS THE LINE I ADDED
        routes.MapRoute(
            "Home",
            "{folderPath}",
            new { controller = "Home", action = "Index", folderPath = UrlParameter.Optional }
        );      
//   END OF LINE I ADDED           
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = -1 }
        );
    }
}

我更改了 RouteConfig 文件,现在我可以拥有 'Home/Folder1' 和 'Home/Folder2' 不幸的是,这不是我想要的:/

我希望我能清楚地解释我的问题。如果有人可以帮助我,我将不胜感激。我实际上正在使用 MVC4。

【问题讨论】:

    标签: asp.net-mvc-3 routes asp.net-mvc-routing


    【解决方案1】:

    在文件夹路径中添加 *:

    "{*folderPath}",
    

    但这会使第二条路线无用。

    【讨论】:

    • 我不是读心术。什么不能如你所愿?你得到什么结果?您是否正在尝试构建网址?在这种情况下,您将不得不手动构建一个 url。
    • 也许我无法清楚地表达我想要什么。如果文件夹 1,2 和 3 按该顺序嵌套,我想以它可以显示嵌套文件夹结构的方式构建 url,例如“Home/Folder1/Folder2/Folder3”。即使每次我遍历嵌套文件夹结构时我只调用 Home 控制器的文件夹操作,我也需要相应地将文件夹名称附加到 Url。
    猜你喜欢
    • 2013-03-13
    • 1970-01-01
    • 2014-03-30
    • 2019-01-12
    • 2016-12-09
    • 1970-01-01
    • 2013-12-17
    • 2019-12-03
    相关资源
    最近更新 更多