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部分的情况下完全执行此操作,因为路径可以轻松地匹配数量的值,事实上我可能确实这样做了 – 但是,我认为如果有一个静态项目,以后管理会更好确认使用该路线. 我希望这可以帮助别人! (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – NullReferenceException在PipelineStepManager.
- asp.net – 使用逗号分隔值搜索列
- asp.net – 存储库模式最佳实践
- ASP.NET设计网络硬盘之删除文件夹实现代码
- asp.net – 如何删除linq到sql?
- asp.net – HttpWebRequest正在为404抛出异常
- asp-classic – 如何从此ADODB.Recordset获取插入ID?
- asp.net-mvc-4 – MVC 4 – Web Api和JSON?
- asp.net-mvc – 如何在ASP.NET MVC中传递页面的元标记?
- asp.net-mvc-3 – 强制重新验证mvc3不显眼的远程验证
- asp.net – 多租户应用程序的输出缓存,因主机名和
- asp.net – 如何在Windows 10 / IIS 10上附加到I
- asp.net-core – 使用[FromBody]时获取原始POST数
- asp.net access web.config denied
- asp.net-mvc – AOP vs MVC FilterAttributes vs
- asp.net-mvc – MVC .NET模型即时绑定到数组
- asp.net-mvc – 禁用生产中的Glimpse和glimpse.a
- asp.net-mvc-3 – 如何添加html到页面里面的一个
- ASP.NET MVC HTML Helpers是否被高估?
- asp.net-mvc – 使用NHibernate时如何处理成员资
