如何填充部分视图以在每个页面上显示
这可能是一个愚蠢的问题,但我试图弄清楚如何为显示登录用户 DisplayName 的部分视图填充 ViewModel。此部分视图位于主布局中,因此它将出现在每个页面上。我知道听起来很简单;然而,在我的一生中,我无法找出将数据获取到视图的最佳方法。我如何坚持这个观点?
This is probably a dumb question but I am trying to figure out how to populate a ViewModel for a partial view that displays the logged in users DisplayName. This Partial view is in the main layout so it will be on every page. Sounds simple I know; however for the life of me I can't figure out the best way to get the data to the View. How do I persist this view?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最好的方法可能是将子操作与 Html.Action 一起使用助手。
因此,与往常一样,在 ASP.NET MVC 中,您从一个视图模型开始,该模型将表示您愿意在视图中操作/显示的信息:
然后是控制器:
相应的部分视图:
然后在您的 _Layout 中继续并包含此操作:
显然,此代码的下一个改进将是避免在每个请求上访问数据库,而是在用户登录后将此信息存储在某处,因为它将出现在所有页面上。最好的地方是例如加密身份验证 cookie 的 userData 部分(当然,如果您使用 FormsAuthentication)、Session,...
The best way would probably to use child actions along with the Html.Action helper.
So as always in ASP.NET MVC you start with a view model which will represent the information you are willing to manipulate/display in a view:
then a controller:
a corresponding partial view:
then go ahead in your _Layout and include this action:
Obviously the next improvement to this code would be to avoid hitting the database on each request but storing this information somewhere once the user logs in as it will be present on all pages. Excellent places for this are for example the userData part of the encrypted authentication cookie (if you are using FormsAuthentication of course), Session, ...
您可以考虑使用子操作方法。
You could look into having a child action method.