C# 如何根据诸如时间或访问者等规则更改Orchard CMS中站点的主页';谁的设备?

C# 如何根据诸如时间或访问者等规则更改Orchard CMS中站点的主页';谁的设备?,c#,asp.net,asp.net-mvc,asp.net-mvc-4,orchardcms,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Orchardcms,我需要能够根据不同的因素动态设置果园网站的主页 通常,我可以创建规则提供程序或主题选择器来动态更改页面上的主题/小部件。但是,一些需要设置为主页的页面只是普通的MVC页面,因此层规则在这种情况下不起作用 我看过alias模块,认为这是一个很好的起点。例如,我可以说,当用户点击/并且满足某些标准时,然后路由到/controller/action/123等 忽略如何实现决策逻辑的问题,有人能建议我实现目标的最佳方法吗?最简单的方法是覆盖“/”的路径,指向您的自定义控制器。在那里做决定,或者执行重定向

我需要能够根据不同的因素动态设置果园网站的主页

通常,我可以创建规则提供程序或主题选择器来动态更改页面上的主题/小部件。但是,一些需要设置为主页的页面只是普通的MVC页面,因此层规则在这种情况下不起作用

我看过alias模块,认为这是一个很好的起点。例如,我可以说,当用户点击
/
并且满足某些标准时,然后路由到
/controller/action/123


忽略如何实现决策逻辑的问题,有人能建议我实现目标的最佳方法吗?

最简单的方法是覆盖
“/”
的路径,指向您的自定义控制器。在那里做决定,或者执行重定向,传输请求,或者返回不同的结果


它也可以在较低的级别上完成,但这要复杂得多(使用自定义路由实现、路由处理程序等-类似于
Orchard.Alias
module所做的)。扩展
Orchard.Alias
以考虑除当前简单路径匹配逻辑之外的自定义逻辑或替换当前简单路径匹配逻辑将是一种可行的方法。

我真的非常鼓励您重新考虑设计,但是:给定的URL原则上应该对应于单个资源。基于这些因素从您的主页重定向到不同的URL将很好地工作,更容易设置,并且从web的角度来看更正确。@BertrandLeRoy从设计和良好实践的角度来看,我完全同意。但可能有一个我们不知道的特定业务需求,它迫使OP在根URL上显示不同的内容,而无需重定向。这就是为什么我们需要有关特定场景的更多信息。但只要我们不知道它是什么,毫无疑问,我会推动最佳实践我同意,如果可能的话,应该避免这种情况,我个人也倾向于伯特朗建议的重新定向。然而不幸的是,这不是客户想要的,除非我们能说服他,否则我们的手就被束缚住了。在这种情况下,只需将/重新路由到您的自定义控制器,将所有逻辑放在那里,然后传输请求(Server.transfer)或只是返回不同的结果。