大家。我希望得到你的帮助。 我无法从前端的下拉列表中获取数据。我在视图模型的此属性中始终为 null。
控制器:
public IActionResult Add()
{
var projectDropdown = _projectsService.GetProjectDropdowns();
ViewBag.Users = new SelectList(projectDropdown.Users, "Id", "Fullname");
return View();
}
[HttpPost]
public IActionResult Add(ProjectViewModel projectVM)
{
var projectDropdown = _projectsService.GetProjectDropdowns();
ViewBag.Users = new SelectList(projectDropdown.Users, "Id", "Fullname");
_projectsService.AddProject(projectVM);
return RedirectToAction(nameof(Index));
}
视图模型:
public class ProjectViewModel
{
public required string Name { get; set; }
public string? Description { get; set; }
public required ProjectStatus Status { get; set; }
public User? ProjectAdmin { get; set; }
public List<User>? Users { get; set; }
}
查看:
<div class="form-group">
<label asp-for="ProjectAdmin" class="control-label"></label>
<select asp-for="ProjectAdmin" class="form-control" asp-items="ViewBag.Users"></select>
<span asp-validation-for="ProjectAdmin" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Users" class="control-label"></label>
<select asp-for="Users" class="form-control" multiple asp-items="ViewBag.Users"></select>
<span asp-validation-for="Users" class="text-danger"></span>
</div>
我也尝试过使用这个变体,但它也不起作用。
<div class="form-group">
<label asp-for="ProjectAdmin" class="control-label"></label>
@Html.DropDownListFor(n => n.ProjectAdmin, (SelectList)ViewBag.Users, htmlAttributes: new { @class = "form-control" })
<span asp-validation-for="ProjectAdmin" class="text-danger"></span>
</div>
我不知道为什么会发生这种情况,调试没有帮助。
当使用
@Html.DropDownListFor()
帮助器时,就像在您的文章中一样,第一个参数应该是一个表达式,用于标识包含要显示的属性的对象,并且它应该是一个简单类型:例如,string
或 int
。
因此,将
ProjectAdmin
定义为
public string ProjectAdmin { get; set; }
然后像下面这样使用它:
<div class="form-group">
<label asp-for="ProjectAdmin" class="control-label"></label>
@Html.DropDownListFor(n => n.ProjectAdmin, (SelectList)ViewBag.Users, htmlAttributes: new { @class = "form-control" })
<span asp-validation-for="ProjectAdmin" class="text-danger"></span>
</div>
将数据模型传递到视图时,将
ProjectAdmin
属性设置为默认显示为选定的值。将表单提交到控制器时,此属性将包含新选定的值。