2016-08-11 76 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> 

我希望这能解决您的问题。

相关问题