我一直在阅读从控制器到视图的 MVC方式将数据传递是通过ViewModel完成的,但是如何将数据传递给_Layout.cshtml
,如页面标题,元描述,文章作者等...
传递此类数据的MVC方式是什么?我应该只为他们使用ViewBag吗?
答案 0 :(得分:3)
你的方法很简单:
ViewBag 和 ViewData 非常易于使用,但并不总是方便。
有一个很大的好处 - 您可以在一个视图中设置/读取它们并在另一个视图中读取 - 例如,您可以在主视图中设置它们并在MyDomain.withTransaction{status->
try{
while(parent.children.size()>4){
parent.children[0].delete(flush:true);
}
}
catch(org.springframework.dao.DataIntegrityViolationException e){
status.setRollbackOnly();
}
}
中读取/显示它们。
查看组件是MVC Core中最有趣的新功能(在我看来),它允许您创建UI小部件。
ViewComponent还有一些编码(你需要创建控制器和视图),但它的灵活功能(我喜欢它),并且很容易在你需要它的地方打电话,只是
_lauout.cshtml
。
注入不是我最喜欢的,但有时候是usfull - 例如,如果你想要显示用户名,你可以直接将以下代码放入你的布局/视图文件中:
@await Component.InvokeAsync("NameOfCOmponent")
然后您可以在同一视图中使用@using System.Security.Claims
@using Microsoft.AspNetCore.Identity
@inject UserManager<ApplicationUser> userManager
@{
var userInfo = ((await userManager?.GetUserAsync(User))?.xxx);
// where 'xxx' is any property of ApplicationUser model
}
来显示该信息。
更多信息: