asp.net mvc 树路径的复杂路由

2024-04-26

我想知道如何定义这样的路由映射:

{TreePath}/{Action}{Id} 

TreeMap 是从数据库动态加载的,如下所示:

 'Gallery/GalleryA/SubGalleryA/View/3'

您可以创建自定义路由处理程序来执行此操作。实际路线是包罗万象的:

routes.MapRoute(
    "Tree",
    "Tree/{*path}",
    new { controller = "Tree", action = "Index" })
        .RouteHandler = new TreeRouteHandler();

树处理程序查看路径,提取最后一部分作为操作,然后重定向到控制器。操作部分也从路径中删除。添加 {id} 部分应该很简单。

public class TreeRouteHandler : IRouteHandler
{
    public IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
        string path = requestContext.RouteData.Values["path"] as string;

        if (path != null)
        {
            int idx = path.LastIndexOf('/');
            if (idx >= 0)
            {
                string actionName = path.Substring(idx+1);
                if (actionName.Length > 0)
                {
                    requestContext.RouteData.Values["action"] = actionName;
                    requestContext.RouteData.Values["path"] = 
                        path.Substring(0, idx);
                }
            }
        }

        return new MvcHandler(requestContext);
    }
}

然后您的控制器将按照您的预期工作:

public class TreeController : Controller
{
    public ActionResult DoStuff(string path)
    {
        ViewData["path"] = path;
        return View("Index");
    }
}

现在你可以像这样调用 URL/Tree/Node1/Node2/Node3/DoStuff。动作得到的路径是Node1/Node2/Node3

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

asp.net mvc 树路径的复杂路由 的相关文章

随机推荐

  • Tastypie 访问继承模型中的字段

    是否可以使用 tastypie 在相关模型上包含字段 根据我的下面的模型 如果我将一个 VideoContent 和一个 TextContent 实例保存到数据库 我就可以从我的内容资源中获取 2 个对象 但是没有任何其他字段可用 是否可以
  • 打开包含透视图等的 MTrimmedWindow 的多个实例

    我已经为我的 RCP 应用程序定义了一个 主窗口 作为 MTrimmedWindow 其中包含透视图 部件等 像往常一样 在 Application e4xmi 中 是否可以开通额外的以编程方式获取此主窗口的实例 类似于从 MPartDes
  • 布隆过滤器的实现

    使用布隆过滤器 我们将获得空间优化 cassandra 框架也有 Bloom Filter 的实现 但具体来说 这种空间优化是如何实现的呢 您可以使用以下示例了解它如何节省空间 假设我在 Google Chrome 团队工作 我想向浏览器添
  • Vba访问错误91

    我尝试运行这段代码 Public Sub Production UpdateStatus ByVal lngProductionId As Long ByVal NewProductionStatus As eProductionStatu
  • Heroku 中没有运行 Django 的 Web 进程

    我试图在heroku中部署我的应用程序 但是当我最终尝试在heroku中运行我的应用程序时 我在浏览器中看到了这样的内容 Application Error An error occurred in the application and
  • RSelenium:抓取加载缓慢的动态加载页面

    我不确定是否是因为我的网速很慢 但我正在尝试抓取一个在您向下滚动页面时加载信息的网站 我正在执行一个转到页面末尾的脚本 并等待 Selenium Chrome 服务器加载附加内容 服务器确实更新并加载新内容 因为我能够抓取最初不在页面上的信
  • 如何在python中获得逻辑正确的二进制移位

    正如标题所示 JavaScript 中有一个特定的运算符 gt gt gt 例如 在 JavaScript 中我们将得到以下结果 1000 gt gt gt 3 536870787 1000 gt gt 3 125 1000 gt gt g
  • Glass 的 SpeechRecognizer 权限不足错误

    我正在使用 GDK 先睹为快构建一个应用程序 但在沉浸式应用程序中无法进行语音识别 这是我的第一个安卓项目 我试着遵循这个 如何在 Android 手机中使用语音识别而不出现烦人的对话框 https stackoverflow com qu
  • SQL-计算数字列值的增加百分比

    我想根据 SQL 数据库中获得的值计算一些趋势 我特别感兴趣的是获取一列中值的增加百分比 如果值减少 则该值应该为负数 有人可以建议我该怎么做吗 我无法使用存储过程 Thanks 我的表有以下列 日期 数字 月份 数字 订单 数字 价格 实
  • 如何静态断言可变参数模板的参数包中的值?

    我正在创建一个可变参数模板 假设我有这样的东西 template
  • Android 媒体播放器使用服务

    我创建了一个MediaPlayer播放 mp3 文件的类 一切都很好 然后我的播放器在后台停止播放 我发现我的问题是我没有在服务中创建它 所以我开始阅读有关服务的信息 以了解如何创建一个服务并将其用于我的播放器 我的问题是 在服务和应用程序
  • Susy:根据屏幕尺寸改变列数

    在 Compass Sass 插件中 Susy http susy oddbird net 您可以在 base scss 文件中设置列数 对于桌面视图 我喜欢有 12 列 然而 对于移动视图来说 这列太多了 有没有办法更改移动显示的列数 我
  • 奇怪的 if 语句

    我发现这很奇怪if 别人代码中的语句 if variable 1 0 我不明白 它应该有两个 right 有人可以解释一下吗 条件式是一个按位运算符 https wiki python org moin BitwiseOperators比较
  • Rails 管理自定义:将 html 视图嵌入到仪表板中

    我们已从 Rails 管理起始页面删除了仪表板和历史记录 现在我们想嵌入一个谷歌分析页面 供用户查看 GA 的仪表板 该页面由一些简单的 HTML 组成 问题 如何在 Rails 管理仪表板中嵌入 html 页面 答案很简单 我需要创建以下
  • Windows 上 python 的长路径 - os.stat() 对于相对路径失败?

    我想访问 Windows 上的一些长 UNC 路径 我知道我需要使用 UNC 前缀 即 UNC 如果你逃脱了斜线 效果很好 os stat UNC server example com that has long path aaaaaaaa
  • 静态方法和实例方法的方法参考

    对于 Java 中的实例方法 我无法理解方法引用的概念 例如 在下面的示例中 编译器在列表行中给出错误 我看过 String toUpperCase 的例子 我对这一点感到困惑 1 String是类 toUpperCase是实例方法 Jav
  • 当用户单击控制台窗口时代码停止执行

    我有一个控制台应用程序 无需用户交互即可执行我的代码 如果用户有意或无意地在控制台窗口内单击 所有执行都会停止 这与从控制台窗口复制文本有关 应用程序再次开始执行的唯一方法是用户选择文本 然后右键单击控制台窗口 将其复制到剪贴板 要查看实际
  • 新用户创建后使用 Dropzone.js 上传,发送标头

    我正在使用一个很棒的插件 dropzone js dropzonejs com 来让我的网站在注册新用户时更加漂亮 基本上 用户填写一个表单 将几个图像放入 dropzone 然后单击 提交 这会触发一个 ajax 调用 将表单发布到 ph
  • Safari 扩展弹出窗口链接

    是否可以在 Safari 弹出窗口中使用链接 我已经做了我能想到的所有事情 但似乎向弹出窗口添加链接只会改变外观 并且不会导致任何可点击的内容 无论是使用 href 还是 onclick 您可以在 href 或 div 上添加 onclic
  • asp.net mvc 树路径的复杂路由

    我想知道如何定义这样的路由映射 TreePath Action Id TreeMap 是从数据库动态加载的 如下所示 Gallery GalleryA SubGalleryA View 3 您可以创建自定义路由处理程序来执行此操作 实际路线