Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何基于没有控制器名称的url手动实例化控制器_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 如何基于没有控制器名称的url手动实例化控制器

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.

我有一个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也不限于此。您可以(在您的情况下,您应该)通过以下任一方法创建自定义路由处理逻辑:

  • 自定义路由约束-使自己成为一个自定义IRouteConstraint,您将在处理由一个特定“内容”控制器服务的内容页的路由上使用它
  • 自定义RouteHandler-这是一个更高级的解决方案,如果您想要一些真正特别的东西,但从您的问题来看,您不需要
如果您计划有多个“内容页”处理控制器,并且您希望从针对DB的路由数据中选择它,那么您必须实现自定义ControllerFactory—这是MVC堆栈中的位置—决定将使用哪个控制器。有很多这样的例子,只有谷歌定制控制器工厂

mvc中的一切都是基于路由的,路由要求url中有一个控制器名称

这根本不是事实。是的,这是默认的最简单的行为,可以开箱即用。但路由并不仅限于此,MVC也不限于此。您可以(在您的情况下,您应该)通过以下任一方法创建自定义路由处理逻辑:

  • 自定义路由约束-使自己成为一个自定义IRouteConstraint,您将在处理由一个特定“内容”控制器服务的内容页的路由上使用它
  • 自定义RouteHandler-这是一个更高级的解决方案,如果您想要一些真正特别的东西,但从您的问题来看,您不需要
如果您计划有多个“内容页”处理控制器,并且您希望从针对DB的路由数据中选择它,那么您必须实现自定义ControllerFactory—这是MVC堆栈中的位置—决定将使用哪个控制器。有很多这样的例子,只有谷歌定制控制器工厂