MVC DropDownListFor - 选定值ViewModel类

时间:2015-08-11 18:37:08

标签: c# asp.net-mvc asp.net-mvc-4

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

@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. 您是否建议我将JMASettings的内容复制并粘贴到我的设置视图模型类中?

2 个答案:

答案 0 :(得分:2)

  1. 不确定。您的视图模型可以包含您喜欢的任何内容。

  2. 不一定。您首次尝试使用model.JMASettings.CustomerID无法显示所选值时,没有任何功能原因。如果不是,那么还有其他一些问题。您可能无法在CustomerID实例上正确填充JMASettings属性,或ModelState中的某些内容可能会覆盖您设置的内容。 ModelState由来自RequestViewDataViewBag第一的值组成,并且仅来自Model的值作为最后的手段

答案 1 :(得分:0)

  

在ViewModel中包含类可以吗?

是的,没关系,但可能没有必要。

  

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

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