gpt4 book ai didi

asp.net-mvc - asp.net mvc 动态/相对路由

转载 作者:行者123 更新时间:2023-12-05 00:03:19 26 4
gpt4 key购买 nike

我正在开发一个具有模块化结构的网站。
url 的每个部分都表示一个内容项。
例如网址:www.mysite.com/blogs/programming/2010/01/

根项目是“区域”类型的“博客”。它有一个“博客”类型的子项目“编程”。

现在网址左侧有“2010/01”。
最后一个有效(可路由)项目“编程”是一个博客,所以我需要将“2010/01”映射到行动

BlogController.Date(int blogid, int year, int?month, int?day)

每个 Controller 都来自一个模块(单独的 dll),该模块注册一些项目类型(博客注册类型“博客”(可路由)和“帖子”(不可路由)。“博客”可以有“帖子”类型的子项)。
当检测到 url 的最后一个有效(可路由)项时,逻辑知道要查找哪个程序集和 Controller 。现在我需要一种使用正确参数调用正确操作的方法。

“博客”类型项目的一些路线

{年}/
{年}/{月}
{年月日}
喂养/
类别/{类别名称}/
标签/{标签名称}/
搜索/{*短语}
{*职位名称}

有什么建议是做路由的简单方法吗?

最佳答案

为了解决 Action 参数签名问题,我个人会创建一个新的模型类“BlogModel”,并将其作为您的单个参数。这样,您将拥有一致的操作参数签名。但是,这需要更多的工作,因为您需要创建一个自定义 ModelBinder 对象“BlogModelBinder”并将其注册到 ModelBinderFactory(或 MVC3 中的 DependencyResolver)。在“BlogModelBinder”中,您只需查找 RouteData 的参数和值并将其绑定(bind)到“BlogModel”中的相应字段。

根据我的个人经验,我认为注册路由没有简单的方法:您仍然必须单独将路由 URL 注册到特定操作。除非有人有一种有效的方法来注册路由 url,否则你可以放心,因为我们都必须用管道代码弄脏我们的手。

关于asp.net-mvc - asp.net mvc 动态/相对路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2101173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com