【发布时间】:2017-09-08 15:25:58
【问题描述】:
我开始学习 ASP.NET,但我仍然不完全熟悉它。
我需要将 Account Controller 数据传递到我的主索引视图。
我正在操纵默认身份验证。我使用迁移在 ASPNETUSERS 表中添加了一个新列(性别)。我需要获取当前登录用户详细信息并将其显示到我的Index 视图中的HomeController。
我已经使用AccountController 中的以下代码进行了过滤。
var currentUserId = User.Identity.GetUserId();
var x = UserManager.FindById(currentUserId);
ViewBag.Gender = x.Gender;
我认为此代码可以过滤登录用户 ID 的特定列。 我想错了吗?如果我错了,请解释一下。
我现在面临的主要问题是将这个@ViewBag.Gender 传递给Index 视图。是否可以在HomeController 的Index 视图中使用@ViewBag.Gender?
我的理解是ViewBag 必须在HomeController 中定义才能通过HomeController 的Index 查看页面。
我如何将AccountController 数据传递给HomeController 的Index 视图?
我不是指使用ViewBag。只要它通过了价值,我就很高兴。
请给我一些建议以完美地做到这一点。
【问题讨论】:
-
不,您不能使用
ViewBag将数据从一个控制器传递到另一个控制器(尽管您可以使用TempData。您应该只是在@ 的Index()方法中使用上面的代码sn-p 987654341@ -
也许您需要将数据持久化到数据库或缓存中。
-
ViewBag用于将控制器数据传递到视图中。您可以改用TempData或Session在控制器之间传递。@ViewBag.Gender也应该在HomeController.Index()方法中使用。 -
@Stephen Muecke,我也试过了,实际上 UserManager 类位于 AccountController 中。因此,该代码不能在 AccountController 之外工作。您可以选择任何不同的方法从用户表中获取过滤数据吗?
-
你是什么意思它不能在
AccountController之外工作(当然可以)
标签: c# asp.net asp.net-mvc