【问题标题】:Pass website URL into the Route in ASP.NET MVC将网站 URL 传递到 ASP.NET MVC 中的路由中
【发布时间】:2009-03-06 22:21:14
【问题描述】:

我正在开发一个需要获取实际 URL 并在路由本身中使用它的项目。我所看到、阅读和测试的所有内容都允许路由在站点 URL 之后获取项目。这是我尝试过的,每次它只是说网站是空白的(这可能是因为默认的空白)。你能告诉我任何关于允许路由也使用根 URL 的问题吗?我们的目标是建立一个网站,该网站将处理 URL,并在视图内部将我路由到不同的胆量。

这是我尝试过的代码,但在本地主机之外没有运气

            routes.MapRoute(
            "PageRouter",
            "{site}/{*url}",
            new { controller = "PageRouter", action = "RoutePage", site = "", url = "" }
        );

非常感谢您的帮助。提前致谢

【问题讨论】:

    标签: asp.net-mvc routing routes url-routing


    【解决方案1】:

    在控制器的动作中使用 HttpContext.Request.RawUrl 怎么样。我可能在这里遗漏了一些东西。您要阅读的网址来自哪里?是当前页面还是其他页面?

    【讨论】:

    • 当前页面是它所在的位置......一旦我们进入路由内部,我们基本上需要使用源 URL 来确定模板。路线中的 {site} 占位符似乎在 RawUrl 之外太远了。我会尝试使用它并就它的工作原理发表评论
    • Nathan....在 Global.asax.cs 中做会更好吗?那时你能从 HttpContext.Request 中获取信息吗?我们需要对进入系统的每个请求执行此操作,以允许自定义模板
    【解决方案2】:

    内森的答案是答案的一部分。 HttpContext.Request.RawUrl 允许访问此信息,但改为在 Global.asax.cs 文件中。这在 Application_BeginRequest 事件中完成。但是诀窍(如果有人知道更优雅的方法,请发表评论)但是我们将正在使用的 Url 注入到剩余的路由路径中,以便可以在 MapRoute 方法中获取它。因此,“http://subdomain.domain.net/url”站点将显示为“http://subdomain.domain.net/subdomain.domain.net/url”,因此可以在 MapRoute 命令的 {site} 部分中获取它。这不会显示给用户,但允许我们在应用程序基于收到的 URL。这听起来合理吗?如果这似乎是一种疯狂的方式来吸收根 URL,欢迎发表评论。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多