【问题标题】:MVC DropDownListFor - Selected Value ViewModel ClassMVC DropDownListFor - 选定值 ViewModel 类
【发布时间】:2015-08-12 02:43:47
【问题描述】:

我正在尝试填充下拉列表的选定值。当我将 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. 是否建议我将 JMASettings 的内容复制并粘贴到我的设置视图模型类中?

【问题讨论】:

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


【解决方案1】:
  1. 当然。您的视图模型可以包含您喜欢的任何内容。

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

【讨论】:

  • 我将 ViewData["JMASettings.CustomerID"] 作为 List,导致绑定无法工作。当我将其更改为 ViewData["CustomerID"] 时,它成功运行。确保 ViewData 中没有与您的属性名称匹配的任何内容。
【解决方案2】:

在 ViewModel 中有类可以吗?

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

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

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

【讨论】:

  • 虽然迁移到单个模型是可以的,但如果您不这样做,您当然不需要自定义模型绑定器。
猜你喜欢
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多