首页 / 知识
关于asp.net mvc:MVC路由中的控制器类别? (在单独的命名空间中重复的控制器名称)
2023-04-14 04:05:00

Categories of controllers in MVC Routing? (Duplicate Controller names in separate Namespaces)我正在寻找以下情况的一些路由示例或示例: 做事的一般示例是:{controller} / {action} / {id} 因此,在进行产品搜索商店的情况下,您将拥有:
假设您有几家商店要这样做,并且始终如一地想要,那么有什么办法可以做到:{category} / {controller} / {action} / {id} 这样您可以对特定商店进行特定搜索,但对不同商店使用不同的搜索方法? (如果您要求商店名称的优先级高于URL中的函数本身) 还是会归结为:
这可能不是一个很好的示例,但是基本上的想法是使用相同的控制器名称,因此在几种不同的情况下都有一个简单的URL,或者您是否需要使用唯一的控制器名称,而无法将其放入命名空间/目录稍有不同? 编辑添加: 我想要这样做的另一个原因是,我可能想要具有类别的url,并且某些控制器只能在某些类别下工作。 IE浏览器: / this / search / items / search + term <-可以 / that / search / items / search + term <-不起作用-因为不允许使用搜索控制器。 实际上,我什至没有通过搜索找到它,而是通过在这个问题中浏览ASP.NET论坛发现的。 使用此方法,您可以在名称空间的任何部分下使用相同名称的控制器,只要您限定哪些路由属于哪个名称空间即可(如果需要,每个路由可以有多个名称空间!) 但是从这里,您可以在控制器下放置一个目录,因此,如果您的控制器是" MyWebShop.Controllers",则将放置目录" Shop1",而名称空间将是" MyWebShop.Controllers.Shop1" 然后工作:
唯一的另一件事是它将引用仍位于基本目录中的视图,因此,如果将视图放入匹配的目录中,则在将其返回到控制器内部时必须将视图名称放入其中。 做到这一点的最好方法是,通过继承IControllerFactory来实现自己的ControllerFactory。您将实现的CreateController方法将处理创建控制器实例以处理RouteHandler和ControllerActionInvoker的请求。约定是在创建控制器时使用控制器的名称,因此您将需要覆盖此功能。这将是您放置用于基于路由创建控制器的自定义逻辑的地方,因为您将有多个具有相同名称但在不同文件夹中的控制器。然后,您将需要在应用程序启动时注册自定义控制器工厂,就像您的路线一样。 您需要考虑的另一个领域是在创建控制器时查找视图。如果您计划对所有视图使用相同的视图,那么您不必做与正在使用的约定不同的任何事情。如果您还计划组织视图,则还需要创建自己的ViewLocator,并在控制器工厂中创建它时将其分配给控制器。 为了了解代码,我在SO上回答了几个与此问题相关的问题,但是由于控制器名称相同,所以这个问题有所不同。我提供了一些参考链接。
另一条路线,但是可能需要做出一些妥协,将是使用新的AcceptVerbs属性。查看此问题以获取更多详细信息。我尚未使用此新功能,但这可能是另一条路线。 |
最新内容
相关内容
linux做路由跟踪命令?
linux做路由跟踪命令?,网络,系统,地址,设备,信息,电脑,工作,命令,服务,全球,linux查找网络配置命令是什么?1、首先在电脑上打开Linux系统,然后linux修改路由命令?
linux修改路由命令?,产品,网络,管理,系统,技术,经理,环境,数据,培训,设备,linux下如何删除静态路由条目/或者静态路由的文件在哪个目录下面?_小米路由器linux命令?
小米路由器linux命令?,网络,地址,数据,密码,系统,工具,管理,电脑,时间,管理人员,linux中/etc/hosts文件配置hosts文件可以配置主机ip与对应的linux路由表修改命令?
linux路由表修改命令?,网络,系统,地址,信息,数据,通信,发行,命令,文件,终端,如何理解ip路由和操作linux的路由表【答案】:简:路由表是用来决定如查看linux路由表命令?
查看linux路由表命令?,网络,信息,系统,地址,工具,状态,软件,中心,数字,基础,在Linux操作系统中,能够显示本机网络路由信息的命令是()。【答案检查路由命令linux?
检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,linux为了确定网络层经过的路由器数目应用什么命令1、发现到达目标linux跟踪路由器命令?
linux跟踪路由器命令?,网络,地址,系统,信息,情况,工具,时间,通信,命令,管理人员,在路由器和Linux系统中,用来跟踪网络路径的命令是什么?命令格linux5路由转发命令?
linux5路由转发命令?,系统,电脑,密码,地址,网络,服务,工作,情况,设备,管理,linux永久开启防火墙路由转发1、首先在命令行输入:cat/proc/sys/netlinux加静态路由命令?
linux加静态路由命令?,信息,系统,网络,地址,环境,服务,路由,静态,情况,设计,Linux怎么添加静态路由?首先看一下本机的网路环境网络信息及路由linux7查询路由命令?
linux7查询路由命令?,网络,系统,信息,工作,地址,情况,命令,通信,工具,检测,在Linux中查询路由器的情况,用什么命令1、Is -1 是 Linux中显示当查看路由命令linux?
查看路由命令linux?,网络,地址,系统,信息,时间,数字,状态,命令,设备,检测,Linux系统中tracert命令使用详解1、traceroute [参数] [主机]命令功linux路由表保存命令?
linux路由表保存命令?,工作,地址,系统,信息,网络,命令,管理,目录,时间,通信,LiNUX系统下,通过什么命令可以查看系统的路由表1、route print 是