MVC2:使用ScaffoldColumn(false)但仍然在DisplayForModel()上显示属性

时间:2010-11-08 22:51:15

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

让我说我有这个模型:

public class PartyGorilla
{
    [ScaffoldColumn(false)]
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}

在我的编辑/创建视图中使用EditorForModel()时,一切都按预期工作,但如果我在详细信息视图中使用DisplayForModel(),则不会显示Id属性,这不是我想要的。我的问题是:我需要广告或其他属性我需要做一个自定义属性吗?

2 个答案:

答案 0 :(得分:4)

尝试使用[HiddenInput]属性。您可以选择显示该值但不可编辑:

[HiddenInput(DisplayValue = true)]
public int Id { get; set; }

或根本不显示该值:

[HiddenInput(DisplayValue = false)]
public int Id { get; set; }

答案 1 :(得分:1)

我只想在LabelFor之前添加DisplayFor id DisplayForModel列。我真的没有看到解决这个问题的简单方法。

你也可以创建一个单独的ViewModel,但它实际上已经实现了非干燥的足迹:

public class PartyGorillaView
{
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}

public class PartyGorillaEdit
{
    [ScaffoldColumn(false)]
    public int Id{ get; set; }

    [DisplayName("Gorilla's Name")]
    [Required]
    public string Name{ get; set; }
}