2012-07-11 146 views
1

我需要獲取該網站的網址,以便僅在主頁上呈現用戶控件。我需要檢查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

我不明白。代碼在哪裏運行?你不能只把控制權放在'主頁' - default.aspx或其他什麼? – n8wrl 2012-07-11 15:08:07

+0

爲什麼您的標記在您的主頁和您的子頁面之間共享?如果你只想要一個用戶控件顯示在主頁上,你應該有一個單獨的ASPX頁面,與其他頁面分開。你提出的解決方案(檢查當前頁面的URL)是對你的設計缺陷的一種破解。 – qJake 2012-07-11 15:08:09

回答

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

+0

+1 ...和作爲[Uri](http://msdn.microsoft.com/en-us/library/txt7706a)處理將更容易獨立於方案,協議等進行處理。 – Filburt 2012-07-11 15:23:16

0

如果您需要的用戶控件只出現在主頁上(我假設你的意思主頁),然後添加代碼以將用戶控件調用到該文件的代碼後面。

如果此代碼存儲在主頁面,那麼你可以參考它想:

Master.FindControl("UserControlID"); 

如果你只使用一個Web表單(即剛Default.aspx),那麼你就可以檢查還沒有相應的查詢字符串包含在URL,並且只顯示,如果是這樣的話:

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

然而,如果你使用這種技術,那麼我會建議使用多個web表單將來使用母版頁來更好地構建您的應用程序。

的ASP.NET網站有關於如何做到這一點的一些好的教程:

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

+0

聽起來像他的主頁不僅僅驅動主頁(認爲'Default.aspx?q =/products/4'),所以這不起作用。 – qJake 2012-07-11 15:12:04

+0

@SpikeX謝謝我編輯了我的帖子以提供替代解決方案。 – Curt 2012-07-11 15:14:51

+0

謝謝大家。我正在使用的應用程序我沒有設計。母版頁用於創建額外的頁面,並通過用戶控件推送內容。 – 2012-07-11 15:39:34