2011-06-28 50 views
0

Mypage.cshtml有一個頁面,並具有一個域「xxx.com」和一個子域「test.xxx.com」,當我在子域「test.xxx」中發佈我的網站時.com「這個頁面的標題顯示了不同的東西。它會是這樣的:根據發佈的域以不同方式呈現視圖

@if (--Request.IsSubDomain("test")--) 
{ 
    <h1>Test page: Product</h1> 
} 
else 
{ 
    <h1>Product</h1> 
} 
+0

驚人的相似http://stackoverflow.com/questions/6551954 /如何找到請求源 –

回答

1

你不希望在你的意見中登錄。我個人會將其移入自定義屬性中,或直接將邏輯包含在控制器中。

順便問一下,問題是什麼?

編輯:

你可以使用Request.Url.Authority來確定域。

+0

如何知道請求是由主域還是子域在本例中爲test.xxx.com? – ridermansb

0

我一般不建議使用ViewBag,但如果你只想用它來呈現一個標題,從父控制器繼承你的控制器說,GeneralController並設置ViewBag.Title屬性基於域存在。

對此的一種替代方法是對包含類似邏輯的基本視圖模型的任何視圖模型進行子類化。

public class GeneralController 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext); 

     if(HttpContext != null) 
      ViewBag.Title = GetRequestPath();   
    } 

    private string GetRequestTitle() 
    { 
     if(HttpContext.Request.Path.Contains("test.xxx")) 
      return "Test site"; 
    } 
} 

然後,任何控制器和隨後呈現的視圖將能夠使用此ViewBag.Title屬性。事實上,開箱即用,MVC3包括_Layout.cshtml作爲其默認佈局(或母版頁)已經包含在頭下面一行:

<title>@ViewBag.Title</title> 
相關問題