【问题标题】:Reverse lookup an asp.net routed url反向查找 asp.net 路由 url
【发布时间】:2013-12-14 17:53:26
【问题描述】:

我找不到从 asp.net 路由请求中获取“真实/未路由”网址的通用方法。

来自

http://www.mysite.com/news/today

得到:

http://www.mysite.com/news.aspx?date=today

我的代码如下:

var currentUrl = HttpContext.Current.Request.Url;
//if url routing is used
if (HttpContext.Current.Request.RequestContext.RouteData!=null)
{
    currentUrl = ???            
}

我尝试使用GetVirtualPath,但有时它返回空值,例如Microsoft.AspNet.FriendlyUrls

Request.RequestContext.RouteData.Route.GetVirtualPath(Request.RequestContext,Request.RequestContext.RouteData.Values)

【问题讨论】:

    标签: c# asp.net routing asp.net-mvc-routing url-routing


    【解决方案1】:

    我发现这个解决方案似乎适用于各种情况:

    var currentUrl = Request.Url.AbsolutePath;
    if (Page.RouteData != null)
    {
        if (Page.RouteData.Route!=null)
        {
            var virtualPathData = Page.RouteData.Route.GetVirtualPath(Request.RequestContext, Page.RouteData.Values);
            if (virtualPathData != null)
            {
                //asp.net routing
                currentUrl = virtualPathData.VirtualPath;
            }
            else
            {
                //only for Microsoft.AspNet.FriendlyUrls
                //GetFriendlyUrlFileVirtualPath never returns nulls
                currentUrl = Request.GetFriendlyUrlFileVirtualPath().Replace("~", "");
            }
        }
    }
    

    对于查询字符串,请使用:Request.QueryString

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 2019-10-03
      • 2018-05-30
      • 2010-11-22
      相关资源
      最近更新 更多