【问题标题】:How to set a default value from the model in a DropDownListFor?如何在 DropDownListFor 中设置模型的默认值?
【发布时间】:2019-08-22 16:13:58
【问题描述】:

我正在使用DropDownListFor 创建枚举下拉列表。我正在创建一个编辑个人资料页面,允许用户在那里进行编辑,所以我希望默认情况下选择他们在个人资料中的内容,以防万一他们不想更改该字段。因此,如果他们的个人资料中有大二学生,则下拉菜单应默认选择大二学生。如何将默认值设置为来自模型(或数据库)的值?

我试过像这样添加一个选项标签,但它添加了一个我不需要的额外选择项。我只需要选择模型中已有的内容即可。

@Html.DropDownListFor(x => x.AcademicInfo.ClassLevel, Html.GetEnumSelectList<ClassLevel>(), Model.ClassLevel.ToString())

型号:

public class ViewModel
{
 [Display(Name = "Class Level")]
 public ClassLevel ClassLevel { get; set; }
}

视图中的 HTML:

@Html.DropDownListFor(x => x.AcademicInfo.ClassLevel, Html.GetEnumSelectList<ClassLevel>())

枚举:

public enum ClassLevel
{
    Freshman = 1,
    Sophomore = 2,
    Junior = 3,
    Senior = 4
    //Other = 5
}

我如何将它添加到模型中:

ViewModel model = new  ViewModel();
model.ClassLevel = (ClassLevel)latestYear.ClassLevelId;

我需要能够从模型中设置默认值

【问题讨论】:

  • 也许您应该发布 实际 代码,而不是尝试重新创建近似值。我相当确定该类实际上不是“ViewModel”,并且例如具有不止一个属性。此外,在您看来,您绑定到Model.AcademicInfo.ClassLevel,这里根本没有表示。这个问题很可能归结为你不包括在内的部分
  • 对不起,我没有把所有的代码都贴出来,我做不到。但事实证明我绑定到了错误的模型,看起来是一件小事,但很难找到。谢谢@ChrisPratt,解决了它。
  • @Html.DropDownListFor(x =&gt; x.ClassLevel, Html.GetEnumSelectList&lt;ClassLevel&gt;()) 是我改成的。

标签: c# html asp.net-core razor enums


【解决方案1】:

当您将数据映射到视图模型时,这种情况自然会发生。换句话说,如果实体将ClassLevel 设置为ClassLevel.Sophmore,那么您可以将该值映射到您的视图模型上的ClassLevel 属性,然后ClassLevel.Sophmore。然后,由于您已将 select 绑定到 ClassLevel 属性,下拉列表的值将自动设置为该属性的值,即在本例中为 ClassLevel.Sophmore

【讨论】:

  • 我相信我在这里绑定了视图模型,但它似乎不起作用。 model.ClassLevel = (ClassLevel)latestYear.ClassLevelId;
  • 我在问题中添加了我如何进行绑定。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
相关资源
最近更新 更多