我有以下使用System.ComponentModel.DataAnnotations:
修饰的域实体 [HiddenInput(DisplayValue=false)]
public int Id { get; set; }
[Required]
[Display(Name="Last Name")]
public string LastName { get; set; }
[Display(Name = "First Name")]
public string FirstName { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
[Timestamp]
[HiddenInput(DisplayValue=true)]
[ScaffoldColumn(true)]
public byte[] Version { get; set; }
当我使用@Html.EditorForModel()
在视图中渲染模型时,不会为version属性渲染任何内容。是否有任何可以强制EditorForModel()
方法呈现byte[]
?
PS:使用@Html.EditorFor(x => x.Version)
效果很好。
答案 0 :(得分:3)
您还可以创建一个名为Version的EditorTemplate,并根据您的需要设计输出。将UIHint属性添加到版本以便使用它。
答案 1 :(得分:2)
byte[]
方法认为EditorForModel
是一种复杂类型,目前无法显示这些类型。您可以尝试向模型添加另一个属性(例如,键入为string
),该属性将读取和写入Version
属性。
答案 2 :(得分:1)
最好编写自己的模板(Object.ascx)。 复制标准MVC Object.ascx模板并将ShouldShow方法更改为:
public static bool ShouldShow(ModelMetadata metadata, ViewDataDictionary viewData) {
return metadata.ShowForDisplay
&& metadata.ModelType != typeof(System.Data.EntityState)
&& (!metadata.IsComplexType || metadata.ModelType == typeof(System.Byte[]))
&& !viewData.TemplateInfo.Visited(metadata);
}