DisplayFor()显示从下拉列表中选择的内容

时间:2014-05-12 19:09:38

标签: c# asp.net-mvc

所以下拉列表有值/文本。值是我存储在我的数据库中的值(因为它是列出下拉列表中显示的值/文本的表的主键)。当我填充下拉列表时,我使用值/文本。当用户选择它时,将值(数字)存储到事务表中。这意味着当我将它读回模型时,我有数字值,而不是文本。但是,在选择24小时后,我只需要显示文本,因为它们无法进行更改。问题是它显示的是值(1,2,3,4)而不是实际的文本,这对人类更有意义。

有没有办法在视图级别转换它?我问的原因是因为我的模板分支并充当显示模板和编辑器模板,因为这是页面上所需的功能。因此,我可以通过以下方式在编辑器模板部分轻松显示所选值:

@Html.DropDownListFor(modelItem => item.RecordType, new SelectList(Model.RecordTypes, "RECORD_TYPE_ID", "RECORD_TYPE", item.RecordType)

但显示部分有:

@Html.DisplayFor(modelItem => item.RecordType)

这给了我数值而不是文字。我是否真的必须在我的视图模型中创建另一个字段并在每条记录中填充文本和值?正如您从DropDownListFor()中看到的,我有RecordTypes列表存储值/文本,所以我可以使用该值来查找文本并通过DisplayFor()或其他函数从模板视图中显示该文本吗?

1 个答案:

答案 0 :(得分:2)

另一种选择可能是:

@Html.DisplayFor(modelItem =>
    Model.RecordTypes.FirstOrDefault(rt => rt.RECORD_TYPE_ID == item.RecordType))

更新:如评论中所述,正确的方法最终成为:

@Model.RecordTypes.FirstOrDefault(rt => rt.RECORD_TYPE_ID == item.RecordType).RECORD_TYPE.ToString()

只显示字符串值。