2014-05-11 29 views
-1

我有一個域名爲www.example.com的網站,它爲用戶提供一些服務 我想擁有一個像www.external.example.com這樣的子域名, www.example.com,但只是在不同的視圖 換句話說,我想所有的控制器和行動,可訪問example.com訪問和工作external.example.com太 我只是想這個子域檢測並更改我的佈局(母版),以顯示不同勢以便用戶通過在asp.net中的子域名工作mvc

在_viewstart.cshtml這樣的事情

@{ 

    // indecate which layout must show 
    if (request from external.example.com) 
    { 
     // for external load 
     Layout = "~/Views/Shared/_ExternalLayout.cshtml"; 
    } 
    else 
    { 
      // for normal load 
      Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
} 

這個怎麼辦?

回答

0

找到子域:

var url = Request.Url; 

string subdomain = string.Empty; 

if (url.HostNameType == UriHostNameType.Dns) 
{ 
    string host = url.Host; 
    if (host.Split('.').Length > 2) 
    { 
     int lastIndex = host.LastIndexOf("."); 
     int index = host.IndexOf("."); 
     subdomain = index.Equals(lastIndex) ? string.Empty : host.Substring(0, index); 
    } 
} 

然後,寫一些代碼來選擇適當的佈局:

switch(subdomain) 
{ 
    case "external": 
     Layout = "~/Views/Shared/_ExternalLayout.cshtml"; 
     break; 

    default: 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
     break; 
}