Asp.net mvc 如何基于没有控制器名称的url手动实例化控制器
我有一个CMS,它在数据库中存储“页面”的URL。该页面引用了一个模板,它只是一个常规的aspx文件。使用URL重写将请求发送到正确的aspx文件 我们几乎完成了MVC支持,但有一个问题。mvc中的所有内容都基于路由,这要求url中有控制器名称(是的,我知道您可以为没有控制器名称的url设置默认控制器,但所有页面都可以有不同的控制器),这使得很难支持以下格式的url: www.domain.com/pagename 例如: www.cnn.com/about-this-site www.cnn.com/press-release-new-ceo-announced 页面名与控制器或视图/操作无关,它只是页面名的url友好版本 因此,基本上我们要做的是获取页面名,找到系统中正确的页面,找到引用的模板(mvc中的控制器),并为该控制器和操作设置手动路由。有什么办法吗?还是应该接受mvc中的URL在大多数情况下需要控制器名称 mvc中的一切都是基于路由的,路由要求url中有一个控制器名称 这根本不是事实。是的,这是默认的最简单的行为,可以开箱即用。但路由并不仅限于此,MVC也不限于此。您可以(在您的情况下,您应该)通过以下任一方法创建自定义路由处理逻辑:Asp.net mvc 如何基于没有控制器名称的url手动实例化控制器,asp.net-mvc,Asp.net Mvc,我有一个CMS,它在数据库中存储“页面”的URL。该页面引用了一个模板,它只是一个常规的aspx文件。使用URL重写将请求发送到正确的aspx文件 我们几乎完成了MVC支持,但有一个问题。mvc中的所有内容都基于路由,这要求url中有控制器名称(是的,我知道您可以为没有控制器名称的url设置默认控制器,但所有页面都可以有不同的控制器),这使得很难支持以下格式的url: www.domain.com/pagename 例如: www.cnn.com/about-this-site www.cnn.
- 自定义路由约束-使自己成为一个自定义IRouteConstraint,您将在处理由一个特定“内容”控制器服务的内容页的路由上使用它
- 自定义RouteHandler-这是一个更高级的解决方案,如果您想要一些真正特别的东西,但从您的问题来看,您不需要
- 自定义路由约束-使自己成为一个自定义IRouteConstraint,您将在处理由一个特定“内容”控制器服务的内容页的路由上使用它
- 自定义RouteHandler-这是一个更高级的解决方案,如果您想要一些真正特别的东西,但从您的问题来看,您不需要