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

.net MVC2:使用ScaffoldColumn(false),但仍在DisplayForModel()上显示属性,.net,asp.net-mvc-2,.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()时,一切都可以正常工作,但如果在详细信息视图中使用DisplayF

假设我有这个模型:

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

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

在我的编辑/创建视图中使用EditorForModel()时,一切都可以正常工作,但如果在详细信息视图中使用DisplayForModel(),则不会显示Id属性,这不是我想要的。我的问题是:我是否需要添加另一个属性,或者我是否需要制作一个自定义属性?

我只需在
DisplayForModel
前面的
id
列中添加
标签。我真的看不到一个更简单的解决这个问题的办法

您也可以创建一个单独的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; }
}

我只想在
DisplayForModel
前面的
id
列中添加
LabelFor
DisplayFor
。我真的看不到一个更简单的解决这个问题的办法

您也可以创建一个单独的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; }
}

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

[HiddenInput(DisplayValue = true)]
public int Id { get; set; }
或者根本不显示该值:

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

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

[HiddenInput(DisplayValue = true)]
public int Id { get; set; }
或者根本不显示该值:

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

如果您想一想,鉴于ViewModel的特定性质,拥有一个特定于显示的ViewModel不会有太大的伤害。。。让它从第一个继承并重写Id属性并不是一个丑陋的解决方案。谢谢你的提示。此外,可编辑(false)在MVC中似乎没有太大作用:如果您考虑一下,鉴于ViewModel的特定性质,使用特定于显示的ViewModel不会有太大的伤害。。。让它从第一个继承并重写Id属性并不是一个丑陋的解决方案。谢谢你的提示。此外,Editable(false)在MVC:sA中似乎也没什么作用,但字段将以我不想要的形式隐藏在那里。如果在上面的第一个示例中指定DisplayValue=true,那么值将显示而不是隐藏。你可以选择任何一种方式。这也是一个很好的解决方案,但字段将以我不想要的形式隐藏在那里。如果在上面的第一个示例中指定DisplayValue=true,那么该值将显示而不是隐藏。你有两种选择。