Scaffold DisplayFor代替EditorFor

时间:2017-03-17 11:41:16

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

我有一个asp.net MVC 5网站。

当我构建一个视图时,它总是在每个属性上生成EditorFor。

我可以使用哪些数据注释来在某些字段上生成DisplayFor(因为它们只需要显示而不是编辑)?

奇怪的是,我在谷歌上找不到任何关于此的内容。

1 个答案:

答案 0 :(得分:0)

你可以使用UIHintAttribute来应用一个小技巧。

首先,在Views\Shared\EditorTemplates文件夹中创建一个新的 EditorTemplate ,名称为DisplayOnly.cshtml,唯一的内容是该行

@Html.DisplayForModel()

然后,使用UIHintAttribute

标记从未编辑但显示的属性
public class MyViewModel
{
    [UIHint("DisplayOnly")]
    public string OnylyDisplayed { get; set; }

    public string Editable { get; set; }
} 

即使EditoFor(...)是脚手架,模板引擎也会将您引导至显示模板。

修改

我确信这会以这种方式工作,但我已经发布了第一次工作;有趣的是,模板中的@Html.LabelForModel()之类的工作原理。也许我错过了什么。如果您需要一个简单的输出,那么在模板中只有@Model就可以了。对于不同类型,您可以使用多个不同的编辑器模板作为只读。