【问题标题】:Html.DropDownListFor field not displaying value from view modelHtml.DropDownListFor 字段不显示视图模型中的值
【发布时间】:2016-12-19 10:54:03
【问题描述】:

我正在渲染一个带有填充视图模型的视图。 Visual Studio 的即时窗口确认在渲染点,Title 和 Country 已设置值,但只有 Country 值是正确的。标题已恢复为第一个 SelectListItem 值。

切换下拉菜单的来源(两者都可以使用相同的帮助器)没有区别,无论我使用哪个来源,Title 属性始终默认返回第一项。

如果我改用@Html.TextBoxFor...,则值会正确显示。我的问题更像是请求帮助 - 什么会导致这种行为?

我的视图模型

public string Title {get; set;}
public string Country {get; set;}

查看

...
ViewBag.Title = "Test"
...
@Html.DropDownListFor(x => x.Title, CertificateFormHelpers.GenerateTitles(), new {@class = "form-select"})

@Html.DropDownListFor(x => x.Country, Countries.All(), new { @class = "form-select" })

更新:视图的属性名称有冲突。更新了视图以包含此声明。

【问题讨论】:

  • 如果选择第一个选项,则表示Title的值与其中一个选项值不完全匹配
  • 确实是我的理解。但是,如果我只是切换助手,尽管值匹配,但 Title 仍然不起作用。它绝对匹配。
  • 你是什么意思如果我只是切换助手?不,他们不匹配。如果Title 的值为"abc" 并且您生成的选项之一具有value="abc",它将被选中
  • 如果 Title 使用 Country.All 并且我选择了一个项目,该值仍会重置为列表中的第一个。值 =“Miss”,在即时窗口中 Model.Title 上的属性 ==“Miss”。它仍然会重置。
  • 抱歉,你说的没有道理。

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


【解决方案1】:

我的问题更像是请求帮助 - 什么会导致这种行为?

在这种特殊情况下,ViewBag 有一个名为“Title”的属性,而我的模型也有一个“Title”属性。 ViewBag.Title 的值在用于填充下拉选项的集合中不存在,因此下拉列表默认为该集合中的第一项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    相关资源
    最近更新 更多