【问题标题】:Redirect to an Area Without Affecting Url in ASP.Net MVC3在 ASP.Net MVC3 中重定向到不影响 URL 的区域
【发布时间】:2011-09-23 11:14:19
【问题描述】:

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

基本流程:

  1. 请求:http://somedomain.com/?ContextId=00001
  2. 重定向
    • 从区域 01 提供内容;控制器主页;行动指数
    • 从 url 中删除了 ContextId 查询字符串条目

所以最终结果是在设置初始 ContextId 之后对http://somdomain.com 的所有请求都将使用该区域,直到指定新的 ContextId 为止。

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

我查看了自定义路由约束,但路由在管道中发生得太早,以至于没有可用的会话,这使得很难“知道”约束所附加的路由是否是我想要的。尤其是在这个阶段我不希望该区域包含在请求 URL 中。

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

【问题讨论】:

  • 可以在路由约束中使用 cookie 吗?
  • 现在只是使用 cookie 进行测试。但不确定它是否适合我们的最终解决方案。感谢您的建议 - 将报告调查结果。
  • @tvanfosson 似乎 cookie 是可以接受的,并且它们在 RouteConstraint 中运行良好。由于路由图中缺少命名空间,因此对 URL 404ing 有一些小问题。谢谢。如果您想将其发布为答案,我会打勾:)

标签: asp.net-mvc-3 routing


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2013-09-25
    • 2012-06-13
    相关资源
    最近更新 更多