【问题标题】:How to Get the Absolutepath Without the Id or Query?如何在没有 id 或 Query 的情况下获取绝对路径?
【发布时间】:2018-12-26 21:57:36
【问题描述】:

假设我的网址是“https://www.mywebsite.com/app/company/employees/5”或“https://www.mywebsite.com/company/employees?id=5&name=jack

我正在寻找一种方法来获取“基本”路径,或者任何它的名称。就像两者的“基本”路径都是“/app/company/employees”一样,没有“/5”部分或“?id=5&name=jack”部分。

我使用string.Join("/", request.ApplicationPath, request.RequestContext.RouteData.Values["controller"], request.RequestContext.RouteData.Values["action"]) 来获取它(请求是 HttpRequestBase),但它不能按我想要的方式工作,因为它也包含索引操作。就像如果 URL 是“https://www.mywebsite.com/app/company”我想要“/app/company/”而不是“/app/company/Index”。我总是可以检查该操作是否为索引,但对我来说感觉就像是一种“代码味道”。

它甚至是代码气味吗?有什么合适的方法可以做到这一点吗?

【问题讨论】:

    标签: c# asp.net-mvc absolute-path


    【解决方案1】:

    Uri 类提供了许多属性https://docs.microsoft.com/en-us/dotnet/api/system.uri?view=netframework-4.7.2

    试试这个

    string val = HttpContext.Current.Request.Url.AbsolutePath;
    

    或者如果您的请求变量是 HttpRequest 对象,请尝试:

    string val = request.Url.AbsolutePath;
    

    【讨论】:

    • 相当肯定 Request.Url.AbsolutePath 包含 Id,就像它会返回“/app/company/employees/5”而不是“/app/company/employees”
    【解决方案2】:

    使用 HttpContext.Current.Request.Url.AbsolutePath

    【讨论】:

    • 相当肯定 Request.Url.AbsolutePath 包含 Id,就像它会返回“/app/company/employees/5”而不是“/app/company/employees”
    • 米兰,你可以自己验证我的假设。我已经为您提供了足够的信息来解决这个问题。别担心,你是一个新的贡献者,可能还没有意识到这些事情。如果您使用的是 Visual Studio,则可以设置断点或使用 Locals 或 QuickWatch 窗格。祝你好运
    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多