c# - 加载视图时选择列表未加载选定值或默认值
问题描述
我有一个视图,它没有显示编辑页面的选定/默认值。我已经设置了 id,我添加了一个断点,我可以看到选择列表已为正确的成员 id 选择设置为 true,但它没有反映在我的视图中,我错过了什么?
如果我将 selectedValue 设置为硬编码值,我会得到相同的结果。
控制器
[HttpGet]
public IActionResult EditMember(Guid? id)
{
var titleId = _context.Members.Where(x => x.RowId == id).Select(y => y.TitleId).FirstOrDefault();
var editMember = new MemberViewModel
{
Titles = new SelectList(_context.Title, nameof(Title.TitleId), nameof(Title.TitleName), titleId).ToList(),
};
return View(editMember);
}
虚拟机
public string TitleName { get; set; }
public int TitleId { get; set; }
public List<SelectListItem> Titles { get; set; }
看法
<label asp-for="TitleId" class="col-2 col-form-label"></label>
<div class="col-10">
<select asp-for="TitleId" class="form-control w-25" asp-items="Model.Titles"></select>
<span asp-validation-for="TitleId" class="text-danger small"></span>
</div>
解决方案
您想在视图模型中传递您的列表并在特定的属性上设置选定的属性,例如在您的控制器中(假设您有一个像 Titles 这样的实体):
public IActionResult EditMember(Guid? id)
{
var titleId = _context.Members.Where(x => x.RowId == id).Select(y => y.TitleId).FirstOrDefault();
var editMember = new MemberViewModel
{
Titles = _context.Titles.Select(g => new SelectListItem
{
Value = g.ToString(),
Text = g.ToString(),
Selected = (g == titleId)
}).ToList();
};
return View(editMember);
}
推荐阅读
- java - 无法导入 google.api.client 等
- apache-spark - 为什么我没有表格以在选择中获得排序结果?
- java - java.lang.ClassNotFoundException : com.mysql.jdbc.Driver 错误在执行以下代码时发生
- react-native - 有没有办法在使用 createBottomTabNavigator 和 createStackNavigator 并且同时使用 navigationOptions 时隐藏选项卡项?
- web - 如何在您有一个包含符号链接的 docroot 路径的地方添加一个 vhost 条目
- json - 有没有办法将 json 对象分类为正确的组
- c++ - 如何使用通过引用传递的值来更新以删除双向链表中的出现
- python - 如何使用 pyopenssl 生成带密码的 pem 密钥和证书?
- c++ - 如果我没有重载,为什么自定义类会出现“'operator='不匹配”?
- mysql - golang sql query timeout