2012-09-24 34 views
1

我試圖創建當用戶..代碼是這樣的記錄,其顯示的菜單:如何使用模型layoutpage

<html> 
<body> 
    @if(Model.IsUserLogged){ 
    //some html 
    } 

    @RenderBody() 

    @if(Model.IsUserLogged){ 
    //some html again 
    } 
</body> 
</html> 

但在頁面佈局,我可以」不要使用模型,那麼最好的方法是什麼?

+1

也許不要在主佈局頁面中執行此操作,創建可以使用模型的部分視圖,並將它們包含在希望顯示條件輸出的位置。 – dougajmcdonald

+0

謝謝。但我怎樣才能將模型傳遞給partialView佈局頁面沒有一個模型?以及如何獲得我發佈的模型,例如用戶的登錄信息? – MuriloKunze

回答

1

有一種方法可以做到這一點,包括使用局部視圖,儘管您需要將邏輯移到佈局外。創建一個局部視圖(比方說,「_MyMenu」或其他),將您的呈現邏輯在那裏,爲它創建一個控制器方法:

public PartialViewResult MenuView() { 
    SomeObject model = GetSomeObject() 
    return PartialView("_MyMenu", model); 
} 

然後在你的頁面佈局,與RenderAction稱之爲:

@{Html.RenderAction("MenuView", "MyController");} 

有人已經提到如何獲取用戶的身份驗證狀態,所以我不確定這對您是否足夠。

1

如果它是授權或認證信息,您正在尋找爲什麼不從請求或cookie讀取。例如以上:

@Request.IsAuthenticated 

其他少量的用戶數據可以被存儲在cookie中,並且使用輔助讀取。或者如果你的受衆瀏覽器可以支持它,你可以在本地存儲中獲得更多的用戶數據。

+0

'IsUserLogged'只是我需要的許多其他屬性之一,例如搜索字符串,但謝謝。 – MuriloKunze

+0

@murilokunze就像我說的,如果這些是用戶設置,請考慮將它們存儲在cookie或本地存儲中(在登錄時加載它們一次) – dove