【问题标题】:mvc3 SelectList SelectedValue is displayed but not returned in Edit viewmvc3 SelectList SelectedValue 在编辑视图中显示但未返回
【发布时间】:2012-04-17 03:47:21
【问题描述】:

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

    @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);

Get 上会显示 SelectedValue,但除非改变,否则不会在 Post 上返回给控制器,更新失败。如果手动选择了值,则返回选择并更新成功。看来 SelectValue 实际上并没有选择任何东西,而只是显示默认文本。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2020-11-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      • 2023-03-10
      相关资源
      最近更新 更多