协慌网

登录 贡献 社区

如何在 C#中获取当前页面的 URL

谁能帮助我在 C#中获取 ASP.NET 当前工作页面的 URL?

答案

试试这个 :

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

您有时可能需要从 URL 获取不同的值。

下面的示例显示了提取 URL 不同部分的不同方法

示例:(示例网址)

http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

代码

Response.Write("<br/> " + HttpContext.Current.Request.Url.Host);
Response.Write("<br/> " + HttpContext.Current.Request.Url.Authority);
Response.Write("<br/> " + HttpContext.Current.Request.Url.Port);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsolutePath);
Response.Write("<br/> " + HttpContext.Current.Request.ApplicationPath);
Response.Write("<br/> " + HttpContext.Current.Request.Url.AbsoluteUri);
Response.Write("<br/> " + HttpContext.Current.Request.Url.PathAndQuery);

输出

localhost
localhost:60527
60527
/WebSite1test/Default2.aspx
/WebSite1test
http://localhost:60527/WebSite1test/Default2.aspx?QueryString1=1&QueryString1=2
/WebSite1test/Default2.aspx?QueryString1=1&QueryString2=2

您可以复制粘贴上面的示例代码,然后在具有不同 URL 的 asp.net Web 窗体应用程序中运行它。

我还建议阅读 ASP.Net 路由,以防万一您可以使用 ASP 路由,那么您就不需要在查询字符串中使用传统的 URL。

http://msdn.microsoft.com/zh-cn/library/cc668201%28v=vs.100%29.aspx

由于 Canavar 的帖子,仅分享这是我的解决方案。

如果您有这样的事情:

"http://localhost:1234/Default.aspx?un=asdf&somethingelse=fdsa"

或像这样:

"https://www.something.com/index.html?a=123&b=4567"

并且您只希望用户输入的部分可以正常工作:

String strPathAndQuery = HttpContext.Current.Request.Url.PathAndQuery;
String strUrl = HttpContext.Current.Request.Url.AbsoluteUri.Replace(strPathAndQuery, "/");

这将导致以下结果:

"http://localhost:1234/"
"https://www.something.com/"