asp.net-mvc – 具有复杂路径的ASP.Net MVC – 如何保持“理智”
我有一个客户希望使用URL命名约定:
/{subjectarea}/{subject}/{action} 这很好 – 这个工作非常出色,每个主题区域有一个控制器,并且在id(主题)之后执行操作完全没有问题. 然而,它变得复杂,因为客户端然后想要进一步继续层次结构: /{subjectarea}/{subject}/{action}/{tightlyrelatedsubject}/{tightlyrelatedsubjectvariables}/{tightlyrelatedsubjectaction} 我有一个控制器用于紧密相关的主题(它只是另一个主题区域),它处理所有管理员方面,但客户端坚持让公共视图挂起父主题而不是它自己的根. 我怎么能这样做,同时避免破坏MVC的整个原则,并避免重新实现我的主题区域控制器中的大量ASP.Net MVC提供的功能,只是为了能够处理来自同一控制器的相关主题? 是否有可能以某种方式从父主题控制器中调用相关主题控制器,并返回结果视图(因为这将保持主题功能与其自己的控制器的分离)?如果可能的话,它将解决很多问题. 解决方法
这是解决我的问题的解决方案 – 希望它解决了别人的问题.
正如我对Robert Harvey的评论所提到的,我实际需要的是另一条不使用前两个或三个组件作为控制器,动作和id的路径,而是从后来获取这些值 – 如果你把它挂起来的话路线中的静态值也更容易做到. 所以,这是我决定简化路线的网址: /{subjectarea}/{subject}/related/{tightlyrelatedsubject}/{tightlyrelatedsubjectvariables}/{tightlyrelatedsubjectaction} 满足此URL的路由如下: routes.MapRoute( "RelatedSubjects","{parentcontroller}/{parentsubject}/related/{controller}/{id}/{action}",new { controller = "shoes",action = "view",id = "all" } ); 在后续的控制器操作中,我可以请求parentcontroller和parentsubject的参数值,这样我就可以过滤掉相关的项目,使其特定于给定的父主题 – 问题解决了! 此路由需要高于仅处理前两个值的路由,否则您将面临另一个路由映射劫持请求的风险. 我可以在没有/ related / static部分的情况下完全执行此操作,因为路径可以轻松地匹配数量的值,事实上我可能确实这样做了 – 但是,我认为如果有一个静态项目,以后管理会更好确认使用该路线. 我希望这可以帮助别人! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- entity-framework – 使用“迁移”实体框架6.0.2中的错误
- asp.net-mvc – ASP.net mvc页脚的公共数据
- asp.net – MS Web部署跳过删除规则不跳过
- asp.net-mvc – 当ModelState为InValid时调用的Ajax.BeginF
- .net – 默认启用UnsafeHeaderParsing是否可以接受?
- asp.net-mvc – 看起来你忘了注册HTTP模块与Windsor城堡与I
- asp.net应用程序的最终用户是否需要安装.net
- asp.net c#membership:如何做一个GetUsersInRoles(多个角色
- asp.net – 如何获取用户在MVC 5中注册的角色的ID
- asp-classic – VBScript函数名称最大长度
- asp.net-mvc – 在哪里?Json.Encode或@Json.Dec
- asp.net-mvc – 我可以从服务器端的持票令牌中检
- 在asp.net中读取查询字符串而不指定任何页面名称
- asp.net-mvc-2 – 我的MVC2应用程序可以在查询字
- 我的asp.net应用程序需要“IIS元数据库和IIS 6配
- asp.net-mvc-3 – 使用多个Web应用程序共享控制器
- asp.net Web应用程序中的静态变量
- 实体框架 – Asp.Net Web API错误:’ObjectCont
- 在asp.net c中添加Master页面后,MySql主机出错
- asp.net – 无法为’localhost’生成绑定重定向.