如何检索站点根URL?

时间:2012-07-11 15:06:10

标签: c# asp.net url

我需要获取网站的网址,以便仅在主页面上呈现用户控件。我需要检查http://foo.comhttp://www.foo.com和foo.com。我对如何检查所有3.我有点难过。我尝试了以下哪些不起作用。

string domainName = Request.Url.Host.ToString();
    if (domainName == "http://nomorecocktails.com" | Request.Url.Host.Contains("default.aspx"))

    { //code to push user control to page

也试过

var url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + "/";

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您需要检查Request.Path属性是否等于//Default.aspx或您的“主页”。域名完全无关紧要。如果我通过http://192.56.17.205/访问您的网站怎么办?同样,如果您的服务器切换了IP地址怎么办?您的域名检查将失败。

如果您使用QueryString显示不同的内容,则还需要检查Request.QueryString

Request.Path的文档:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.path.aspx

Request.QueryString的文档:

http://msdn.microsoft.com/en-us/library/system.web.httprequest.querystring.aspx

答案 1 :(得分:0)

如果您需要用户控件仅显示在主页面上(我假设您的意思是主页),则添加代码以将用户控件调用到该文件后面的代码。

如果此代码存储在母版页中,则可以像以下一样引用它:

Master.FindControl("UserControlID");

如果您只使用一个网络表单(即只是Default.aspx),那么您可以检查URL中是否包含相关的查询字符串,并且只有在这种情况下才会显示:

if (Request.QueryString["q"] == null){
  //user control code
}

但是,如果您正在使用此技术,那么我建议您将来使用多个网页表单来更好地构建您的应用程序。

ASP.NET网站提供了一些关于如何执行此操作的好教程:

http://www.asp.net/web-forms/tutorials/master-pages