下拉菜单未选择正确的值

问题描述 投票:0回答:4

以下代码有什么问题?

    @Html.DropDownListFor(model => model.title, new List<SelectListItem>
  {
      new SelectListItem { Text = "Other" , Value = "Other"},
      new SelectListItem { Text = "Mr", Value = "Mr" },
      new SelectListItem { Text = "Mrs", Value = "Mrs" },
      new SelectListItem { Text = "Ms", Value = "Ms" },
      new SelectListItem { Text = "Miss", Value = "Miss" }
    }, 
      new { @class = "form-control" })

上面允许我选择值并将其保存到表中,但是当进行编辑时,未选择保存的值

例如现有数据在编辑时以“先生”保存,显示“其他”

为什么?

c# asp.net-mvc razor
4个回答
0
投票

尝试按照以下方式使用

SelectList
此重载

@Html.DropDownListFor(model => model.title, new SelectList(new List<SelectListItem>
  {
      new SelectListItem { Text = "Other" , Value = "Other"},
      new SelectListItem { Text = "Mr", Value = "Mr" },
      new SelectListItem { Text = "Mrs", Value = "Mrs" },
      new SelectListItem { Text = "Ms", Value = "Ms" },
      new SelectListItem { Text = "Miss", Value = "Miss" }
    },
    "Value",
    "Text",
     Model.Title), 
     new { @class = "form-control" })

SelectList 构造函数(IEnumerable、String、String、String、Object)

public SelectList(
    IEnumerable items,
    string dataValueField,
    string dataTextField,
    string dataGroupField,
    Object selectedValue
)

0
投票

这是最糟糕的

它正在从事这一事业,但不适用于上述事业

  @Html.DropDownListFor(model => model.PreferredContact, new List<SelectListItem>
                                            {
                                            new SelectListItem { Text = "Other" },
                                            new SelectListItem { Text = "Telephone", Value = "Telephone" } ,
                                            new SelectListItem { Text = "Email", Value = "Email" },
                                            new SelectListItem { Text = "Post", Value = "Post" }
                                            }, new { @class = "form-control" })

0
投票

好的

我发现了问题

您不能将“头衔”作为名称。 title 是 HTML5 上的一个属性。我将该字段重命名为 dTitle 并且它有效


0
投票

为什么不创建一个 Enum ?它比这个干净得多。您会在视图上看到一个包含 3 行代码的下拉列表。

© www.soinside.com 2019 - 2024. All rights reserved.