在ASP.Net MVC3中重定向到区域而不影响URL

时间:2011-06-27 12:04:05

标签: asp.net-mvc-3 routing

在初始重定向后,是否可以将MVC3请求重定向到区域路由而不使用301/302重定向?让我解释一下我想要的东西,因为这对我来说听起来很复杂。

基本流程:

  1. 请求:http://somedomain.com/?ContextId=00001
  2. 重定向
    • 从01区提供内容;控制器家;行动指数
    • 从网址
    • 中删除了ContextId查询字符串条目
  3. 因此,最终结果是在设置初始ContextId之后对http://somdomain.com的所有请求将使用该区域,直到指定新的ContextId为止。

    我可以使用IHttpModule来捕获查询字符串,然后在会话中为后续请求设置一些值,但之后我需要发出RedirectToXXXX()调用来执行重定向。这将生成包含该区域的URL,然后我需要在将来识别此类“映射”请求以防止重定向循环。 Euwwww。

    我已经查看了自定义路由约束,但路由在管道中很早就发生了,因为没有可用的会话,这使得很难“知道”约束所附加的路由是否是我想要的路由。特别是因为我不希望在此阶段请求URL中包含该区域。

    这可能吗?任何想法都会受到欢迎。

1 个答案:

答案 0 :(得分:0)

您可以将上下文存储在cookie中,并使用RouteConstraint中的cookie值强制匹配适当的区域。