c# - 使用 SelectList 从 DropDownList 中获取 AspNetUsers 的 ID
问题描述
在一种Create
方法中,我有一个将参数传递AssignedTo
给数据库列的字段,该字段是 AspNetUsers 表的外键。我将用户名列表存储在 Viewbag 中,使它们在 DropDownList 中都可见。
public IActionResult Create()
{
ViewBag.Users = userManager.Users.Select(u => u.UserName).ToList();
return View();
}
在视图中,代码如下:
<div class="form-group">
<label asp-for="AssignedTo"></label>
@Html.DropDownList("YourDropDownList", new SelectList(ViewBag.Users))
<select asp-items="@new SelectList(ViewBag.Users)" asp-for="AssignedTo"></select>
</div>
这里的问题是我AssignedTo
得到了 AspNetUser 的值UserName
。根据过去问题的建议,我将选择构造函数更改为,new SelectList(Viewbag.Users, nameof(AppUser.Id), nameof(AppUser.UserName))
但效果不佳,因为它返回:
NullReferenceException:对象引用未设置为对象的实例。
这可能是因为我用于此视图的模型不包含AppUser
吗?我该如何解决这个问题?
解决方案
要从 DropDownList 获取 AspNetUsers 的 Id,您可以使用 ViewBag,如下所示:
public IActionResult CreateTask()
{
ViewBag.Users = new SelectList(_userManager.Users, nameof(AppUser.Id), nameof(AppUser.UserName));
return View();
}
任务模型:
public class TaskModel
{
public int Id { get; set; }
public string Name { get; set; }
public string AssignedTo { get; set; }
//other properties
}
并且在视图中
<div class="form-group">
<label asp-for="AssignedTo"></label>
<select asp-for="AssignedTo" asp-items="@ViewBag.Users"></select>
</div>
您可以参考此处了解如何填充 Select 标签助手。
推荐阅读
- typescript - 将 Nestjs api 部署到 Heroku
- reactjs - 测试 useSelector 值更改后挂载
- python - Python - 没有名为错误的模块。无论我将 __init__.py 文件放在哪里,摄取器文件似乎都无法访问它
- node.js - (插件汇总核心)错误:无法加载/Users/Naseem/AppData/Roaming/npm/node_modules/wpe-lightning-cli/src/alias/wpe-lightning.js
- firebase - 您的 Cloud Firestore 数据库具有不安全的规则。什么规则最适合简单的应用程序?
- python - 保存为 VTK 旧格式 3.0
- python-3.x - 如何在不循环的情况下获取statsmodels中多个单变量OLS的变量t-stat?
- c# - 使用 asp.net core 2.2 创建类别和子类别依赖列表框
- java - 一个定时器对象,TextView 中的所有定时器都被更新
- python - 如何使用 sparql 查询仅获取值“Tuýp_2”并删除 URIRef 链接“http://www.semanticweb.org/ngocv/ontologies/2020/5/hotrobenhtieuduong#Tuýp_2”