MVC DropDownListFor -选定值视图模型类

本文关键字:视图 模型 DropDownListFor MVC | 更新日期: 2023-09-27 18:07:18

我正在尝试填充下拉列表的选定值。当我将ViewModel上的选定值设置为字符串时,它可以完美地工作。当我将所选值属性设置为子类的一部分时,它失败了:

@Html.DropDownListFor(model => model.JMASettings.CustomerID, Model.CustomerIDList)

这个方法有效:

@Html.DropDownListFor(model => model.CustomerID, Model.CustomerIDList)
  1. 是否可以在ViewModel内部拥有类?

    public class SettingsViewModel
    {
        public SettingsViewModel()
        {
            JMASettings = new JMASettings();
        }
        public JMASettings JMASettings {get; set;}
    }
    public class JMASettings
    {
        public string CustomerID {get; set;}
    }
    
  2. 你建议我复制并粘贴jmassettings的内容到我的设置视图模型类吗?

MVC DropDownListFor -选定值视图模型类

  1. 确定。你的视图模型可以包含任何你喜欢的东西

  2. 不一定。使用model.JMASettings.CustomerID的第一次尝试不显示所选值没有功能上的原因。如果不是,那就有别的问题了。您可能没有正确地在JMASettings实例上填充CustomerID属性,或者ModelState中的某些东西可能会覆盖您设置的内容。ModelStateRequest, ViewDataViewBag的值组成,首先,最后才使用Model的值。

在ViewModel里面有类是可以的吗?

是的,这是可以的,但可能不是必须的。

你是否建议我复制并粘贴jmassettings的内容到我的设置视图模型类中?

是的,我建议将其移动到单个模型,因为子类将要求您创建自定义模型绑定器。