【发布时间】:2019-04-25 21:13:27
【问题描述】:
假设我的网址是:
https://www.mywebsite.com/app/company/employees/5
https://www.mywebsite.com/app/company/employees?id=5&name=jack
https://www.mywebsite.com/app/company/employees/5?clockId=1
我正在寻找一种方法来获取“基本”路径,或者任何它的名称。就像所有的“基本”路径都是“/app/company/employees”,没有“/5”部分或“?id=5&name=jack”或“/5?clockId=1”部分。
我使用string.Join("/", context.Request.ApplicationPath, context.Request.RequestContext.RouteData.Values["controller"], context.Request.RequestContext.RouteData.Values["action"]) 来获取它(上下文是 HttpContext),但它不能按我想要的方式工作,因为它也包含索引操作。就像如果 URL 是“https://www.mywebsite.com/app/company”我想要“/app/company/”而不是“/app/company/Index”。我总是可以检查该操作是否为索引,但对我来说感觉就像是一种“代码味道”。
同样使用 context.Request.Url.AbsolutePath 也不起作用,因为它返回“/app/company/employees/5”(它返回带有 Id 的路径)
【问题讨论】:
-
索引是您的操作,如果您不想要该操作,那么为什么要附加它?
-
为什么不取主机名 + /app/company 是固定的
-
@maytham-ɯɐɥʇʎɐɯ 问题是他应该如何得到
/app/company? -
这适用于自定义路线吗?或者这是否发生在 url 被映射到控制器和操作之后?
标签: c# url httpcontext