我有一个带有以下DropDown列表的编辑视图:
@Html.DropDownListFor(model => model.Size,
new SelectList(Enumerable.Empty<SelectListItem>(), "Size", "Size"),
Model.Size,
new { id = "WoodSize" })
@Html.ValidationMessageFor(model => model.Size)
控制器的相关部分是:
[HttpPost]
public ActionResult Edit(Part part)
{
try
{
if (ModelState.IsValid)
{
unitOfWork.PartRepository.Update(part);
unitOfWork.Save();
return RedirectToAction("Index");
}
}
catch (DataException)
{
//Log the error (add a variable name after DataException)
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
return View(part);
SelectedValue显示在Get上,但除非更改,否则它不会返回到Post上的控制器,并且更新失败。如果手动选择该值,则返回选择并更新成功。似乎SelectValue实际上没有选择任何东西,只显示默认文本。
我必须遗漏一些东西,但我不知道是什么。
答案 0 :(得分:0)
您的第三个参数只是一个标签,因此您可以让下拉菜单说“选择大小”,例如,它不包含值。在您的实例中,使用Model.Size值作为标签
如果您的Model值与可用选项列表中的值匹配,则它会将其标记为已选中,从而在您提交时将值发送给您的控制器。