c# - 使用 IEnumerable ViewModel 在 MVC Razor 视图中呈现下拉列表
问题描述
我遵循以下答案:
但无济于事。
当视图模型的类型为 IEnumerable 时,似乎很难在视图中呈现下拉列表。
我正在尝试使用视图模型让 ClassName 的下拉列表出现在我的 BookClass 视图中:
public class MemberClassViewModel
{
[Required]
public int MemberID { get; set; }
[Required]
public int ClassID { get; set; }
public SelectList ClassName { get; set; }
public List<Member> MemberClassBookings { get; set; }
}
我正在使用 SelectList 作为类名(这是练习类名 - 我正在构建一个可以在健身房使用的应用程序)。
[HttpGet]
public async Task<IActionResult> BookClass(int id)
{
List<MemberClassViewModel> memberClassViewModel = new List<MemberClassViewModel>();
var classlist = _context.Classes.OrderBy(c=>c.ClassName).Select(x => new { Id = x.Id, Value = x.ClassName });
var listData = await (from Classes in _context.Classes
select new
{
Classes.Id,
Classes.ClassName,
Classes.MemberClassBookings
}
).ToListAsync();
listData.ForEach(x =>
{
MemberClassViewModel Obj = new MemberClassViewModel();
Obj.MemberID = id;
Obj.ClassID = x.Id;
Obj.MemberClassBookings = x.MemberClassBookings;
Obj.ClassName = new Microsoft.AspNetCore.Mvc.Rendering.SelectList(classlist, "Id", "Value");
memberClassViewModel.Add(Obj);
}
);
return View(memberClassViewModel);
}
这是我的操作方法。如您所见,我将 ClassName 添加到视图模型的实例中,同时呈现下拉列表。
但是在我看来,我似乎无法访问我的下拉列表:
@model IEnumerable<GymTracker.ViewModel.MemberClassViewModel>
@{
ViewData["Title"] = "BookClass";
}
<h2>Book Class</h2>
<div class="form-group">
<label asp-for="ClassName" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="Classname" asp-items="@Model"></select>
</div>
</div>
任何帮助都感激不尽。谢谢
解决方案
推荐阅读
- sql - 从 SQLite 中的日期时间字段中选择特定日期
- django - 使用 django-filter 按升序和降序排序
- python - 我想知道为什么我的代码在 XML 信息之间产生空白行?
- coq - 在 Coq 中证明 `forall x xs ys, subseq (x :: xs) ys -> subseq xs ys`
- django - Django 用户的 DetailVew 影响经过身份验证的用户
- opencv - MinGW 无法识别目录 opencv
- beautifulsoup - 使用游戏发送的数据访问本地主机 (War Thunder)
- c# - 如何在应用程序 MVC Moq 中起订 File.Delete (IFileSystem)
- python - 代码多次返回同一行而不是多行
- javascript - 在猫鼬中执行 CRUD 操作时异步/等待