在具有.aspx扩展名的mvc应用程序中获取Current.Request.Url

时间:2013-06-14 05:49:05

标签: c# asp.net-mvc

我有一个ASP.NET MVC 3应用程序,我必须将带有.aspx扩展名的请求映射到另一个路由。我想要做的是在应用程序启动时获取当前请求URL。但问题是它运行正常,所有网址没有.aspx扩展名,但在前面的网址中 (http://example.com/Products/5/16/Eettafels.aspx)它仅显示http://example.com/

然而,http://example.com/Products/5/16/Eettafels显示正确的路径..

所有代码都是一个简单的行:

string currentUrl = HttpContext.Current.Request.Url.ToString().ToLower();

任何人都可以知道我做错了什么

2 个答案:

答案 0 :(得分:7)

虽然这是一个非常古老的帖子。

我只是粘贴了Ha Doan链接的代码,这样任何人都可以更轻松地登陆这个问题。

string url = HttpContext.Current.Request.Url.AbsoluteUri;
// http://localhost:1302/TESTERS/Default6.aspx

string path = HttpContext.Current.Request.Url.AbsolutePath;
// /TESTERS/Default6.aspx

string host = HttpContext.Current.Request.Url.Host;
// localhost

检查此SO以进行讨论

答案 1 :(得分:0)

现在,您可以覆盖在调用任何Action之前执行的Controller方法。我建议你保持当前的Url像@Ifitkhar一样在ViewBag或TempData中建议,以防你打算重定向,然后在之后想要返回的Action中使用它。

public class ProductsController
{
    protected override void OnActionExecuting(ActionExecutingContext filterContext){
        TempData["previousUrl"] = HttpContext.Current.Request.Url.AbsoluteUri;
        base.OnActionExecuting(filterContext);
    }
}