Asp.net MVC方式将数据传递给_layout.cshtml?

时间:2016-12-23 20:16:48

标签: asp.net-mvc visual-studio-2015

我一直在阅读从控制器到视图的 MVC方式将数据传递是通过ViewModel完成的,但是如何将数据传递给_Layout.cshtml,如页面标题,元描述,文章作者等...

传递此类数据的MVC方式是什么?我应该只为他们使用ViewBag吗?

1 个答案:

答案 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 } 来显示该信息。


更多信息: