我有一个视图,未显示编辑页面的选定值/默认值。我已经设置了ID,添加了一个断点,并且可以看到选择列表已将设置为true的正确成员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);
}
VM
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>
答案 0 :(得分:0)
您想在视图模型中传递列表,并在控制器中的特定属性上设置选定的属性(假设您拥有诸如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);
}
答案 1 :(得分:0)
是的,选择的项目无法与旧的Html-helper-dropdown一起使用但与select一起使用却感到沮丧
仅当您未绑定到模型时,才可以在select中设置所选项目
<select asp-items="Model.Titles" name="TitleId"></select>
然后,您可以在提交表单后在服务器上绑定“ TitleId”
如果保留模型绑定,则需要删除“ asp-items”并手动填充列表。
<select asp-for="TitleId">
<option selected disabled>Titles</option>
@foreach (var title in Model.Titles)
{
<option value="@title.Value" selected="@title.Selected">@title.Text</option>
}
</select>
通过这种方式,您可以从模型中选择商品