0

我有一个带有以下下拉列表的编辑视图:

    @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 实际上并没有选择任何东西,而只显示默认文本。

我必须错过一些东西,但我不知道是什么。

4

1 回答 1

0

您的第三个参数只是一个标签,因此您可以让下拉菜单说“选择大小”,例如,它不包含值。在您的实例中,您使用 Model.Size 值作为标签

如果您的模型值与可用选项列表中的值匹配,那么它将标记为已选中,并在您提交时将值发送给您的控制器。

于 2012-04-18T09:13:45.267 回答