如何向ViewModel传递指定属性对象?卡组构建器用户卡牌筛选
解决卡组构建器中仅显示当前用户卡牌的问题
要让下拉列表只显示当前用户拥有的卡牌,只需修改控制器中的卡牌查询逻辑,添加用户ID筛选条件即可:
步骤1:修改控制器代码
首先获取当前登录用户的ID,然后从数据库中筛选出UserId匹配的卡牌:
public ActionResult New() { // 获取当前登录用户的ID(假设使用ASP.NET Identity身份验证) var currentUserId = User.Identity.GetUserId(); // 筛选出当前用户拥有的卡牌 var userCards = _context.Cards.Where(c => c.UserId == currentUserId).ToList(); var viewModel = new DeckFormViewModel { Cards = userCards }; return View("DeckForm", viewModel); }
步骤2:视图无需修改
你的表单代码不需要改动,因为下拉列表是基于Model.Cards渲染的,只要控制器传递的是筛选后的用户专属卡牌列表,下拉框就会自动只显示当前用户拥有的卡牌。
注意事项
- 确保
User.Identity.GetUserId()能正确获取当前用户ID,如果你使用的是其他身份验证方式,替换成对应的获取用户ID的方法即可。 - 确认数据库中的
Cards表确实存在UserId字段,且存储的是用户的唯一标识。
内容的提问来源于stack exchange,提问作者Riley Mincic
相关产品推荐
相关产品推荐

