Asp.net mvc 在ASP.NET MVC中将网站URL传递到路由中

Asp.net mvc 在ASP.NET MVC中将网站URL传递到路由中,asp.net-mvc,routing,routes,url-routing,Asp.net Mvc,Routing,Routes,Url Routing,我正在做一个项目,需要获取实际的URL并在路由本身中使用它。我所看到的、阅读的和测试的一切都允许路由在站点URL之后抓取项目。这就是我尝试过的,每次它都简单地说站点是空白的(这可能是因为默认的blank)。你能告诉我一些关于允许路由也使用根URL的细节吗?目标是一个网站,将处理的网址和路由我到不同的内脏,一旦进入了视图 下面是我尝试过的代码,但在localhost之外没有运气 routes.MapRoute( "PageRouter",

我正在做一个项目,需要获取实际的URL并在路由本身中使用它。我所看到的、阅读的和测试的一切都允许路由在站点URL之后抓取项目。这就是我尝试过的,每次它都简单地说站点是空白的(这可能是因为默认的blank)。你能告诉我一些关于允许路由也使用根URL的细节吗?目标是一个网站,将处理的网址和路由我到不同的内脏,一旦进入了视图

下面是我尝试过的代码,但在localhost之外没有运气

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

非常感谢你的帮助。提前感谢

在控制器的操作中使用HttpContext.Request.RawUrl怎么样。我可能遗漏了什么。您要读取的url来自哪里?是当前页面还是其他页面?

在控制器的操作中使用HttpContext.Request.RawUrl怎么样。我可能遗漏了什么。您要读取的url来自哪里?是当前页面还是其他页面?

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

Nathan的答案是答案的一部分。HttpContext.Request.RawUrl允许访问改为在Global.asax.cs文件中。这是在应用程序_BeginRequest事件中完成的。但是技巧(如果有人知道更优雅的方法,请发表评论)但是我们将使用的Url注入到剩余的路由路径中,以便可以在MapRoute方法中获取。因此“”站点将显示为因此,可以在MapRoute命令的{site}部分获取它。这不会显示给用户,但允许我们根据收到的URL在应用程序内部做出决定。这听起来正常吗?如果为了吸收根Url,这似乎是一种疯狂的做法,那么欢迎发表评论。

当前页面就是它所在的位置……我们基本上需要在进入路由后使用源Url来确定模板。路由中的{site}占位符似乎过了RawUrl太远。我将尝试使用它,并对它的工作原理发表评论Nathan…在Global.asax.cs中使用它会更好吗?您可以从HttpContext.Request获取信息吗?我们将需要对进入系统的每个请求执行此操作,以允许自定义模板当前页面就是它所在的位置……我们基本上需要在进入路由后使用源URL来确定模板。路由中的{site}占位符似乎过了RawUrl太远。我将尝试使用它,并对它的工作原理发表评论Nathan…在Global.asax.cs中使用它会更好吗?您可以从HttpContext.Request获取信息吗?我们需要对进入系统的每个请求执行此操作,以允许自定义模板