我们可以在 Layout.cshtml 中添加模型吗?
Can we add Models in Layout.cshtml?
我有 4 个页面的布局,在 header 我需要访问登录管理员的名称。如何在我添加的布局开始时在管理中访问该数据库模型
@model ProjectName.Models.Admin
并且在从管理员访问名称时我正在写
@Model.Name
如何以正确的方式在布局中访问该属性给出了错误,它不能是局部视图,它应该是布局,所以请帮助
正如@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);
}
}
您需要在应用程序的许多页面中登录用户详细信息,因此最好 将登录用户详细信息存储在 Session 中,您可以检索 session 任何 view/partial 视图中的值。
其他解决方案:
创建您的 header 局部视图并从布局调用
Html.RenderAction("actionName", "controllerName")
在控制器中创建一个操作方法,returns 局部视图
控制器动作方法
[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>
希望这能解决您的问题。
我有 4 个页面的布局,在 header 我需要访问登录管理员的名称。如何在我添加的布局开始时在管理中访问该数据库模型
@model ProjectName.Models.Admin
并且在从管理员访问名称时我正在写
@Model.Name
如何以正确的方式在布局中访问该属性给出了错误,它不能是局部视图,它应该是布局,所以请帮助
正如@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);
}
}
您需要在应用程序的许多页面中登录用户详细信息,因此最好 将登录用户详细信息存储在 Session 中,您可以检索 session 任何 view/partial 视图中的值。
其他解决方案:
创建您的 header 局部视图并从布局调用
Html.RenderAction("actionName", "controllerName")
在控制器中创建一个操作方法,returns 局部视图
控制器动作方法
[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>
希望这能解决您的问题。