我需要获取网站的网址,以便仅在主页面上呈现用户控件。我需要检查http://foo.com,http://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) + "/";
有什么想法吗?
答案 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网站提供了一些关于如何执行此操作的好教程: