You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 14:01:17