mvc3 SelectList SelectedValue显示但未在编辑视图中返回

时间:2012-04-17 03:47:21

标签: asp.net-mvc post selectlist selectedvalue actionresult

我有一个带有以下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实际上没有选择任何东西,只显示默认文本。

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

1 个答案:

答案 0 :(得分:0)

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

如果您的Model值与可用选项列表中的值匹配,则它会将其标记为已选中,从而在您提交时将值发送给您的控制器。