2016-08-11 78 views
-2

我有4頁的佈局,並在標題我需要訪問登錄管理員的名稱。如何訪問在管理該數據庫模型在佈局開始我已經添加我們可以在Layout.cshtml中添加模型嗎?

@model ProjectName.Models.Admin 

,並同時從管理訪問名字我寫

@Model.Name 

提示錯誤怎麼做,在適當的方式訪問該屬性在佈局和它不能是局部視圖它應該是佈局如此好幫助

+1

在佈局中使用'@ Html.Action()'調用返回分部視圖的服務器方法,或者使用包含所需屬性的基礎視圖模型,並在佈局和聲明中聲明基礎視圖模型查看,使用從該基本視圖模型派生的視圖模型 –

回答

1

作爲@Stephen Muecke在他對你的問題的評論中說,有更多的方法可以做到這一點。我建議你保持你的佈局視圖沒有模型。否則,如@Stephen Muecke所提到的,您必須爲每個視圖創建使用相同或派生類型的佈局的模型類型,這會增加代碼的不必要的複雜性。

因此,另一種方式是在您想要渲染用戶名的位置在佈局視圖中調用HtmlHelper.Action(...)HtmlHelper.RenderAction()。例如:

佈局頁:

... 
<div class="admin-name"> 
    @{ Html.RenderAction("AdminName", "Partial"); } 
</div> 
... 

添加控制器:

public class PartialController : Controller { 
    [ChildActionOnly] // action cannot be requested directly via URL 
    public ActionResult AdminName() { 
     string adminName = ...; // assign value to adminName variable 
     return Content(adminName); 
    } 
} 
0

您需要登錄的用戶的詳細信息,在申請這麼多頁,所以最好店用戶信息登錄會話,您可以在任何視圖/部分視圖中檢索會話值。

其他解決方案:

讓你的頭部局部視圖和佈局

Html.RenderAction("actionName", "controllerName") 
0

調用Create在你的控制器返回局部視圖的操作方法

控制器的操作方法

[HttpGet] 
public ActionResult Header() 
{ 
    HeaderModel HM = new HeaderModel() 
    // Your user information in HeaderModel 
    return PartialView("Header", HM) 
} 

_layout.cshtml

<body> 
    <div> 
     @{Html.RenderAction("Header", "ControllerName");} 
    </div> 
</body> 

我希望這能解決您的問題。

相關問題