使用 EditorForModel() 时如何获取要呈现的时间戳属性?

发布于 2024-10-15 08:18:34 字数 743 浏览 11 评论 0原文

我有以下用 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() 在视图中渲染模型时,不会为版本属性渲染任何内容。有什么可以强制 EditorForModel() 方法渲染 byte[] 吗?

PS:使用 @Html.EditorFor(x => x.Version) 效果很好。

I have the following domain entity decorated with 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; }

When I render my model in the view using @Html.EditorForModel() nothing is rendered for the version property. Is there anything that can force EditorForModel() method to render the byte[]?

PS: Using @Html.EditorFor(x => x.Version) works just fine.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

原野 2024-10-22 08:18:34

您还可以创建一个名为 Version 的 EditorTemplate 并按照您认为合适的方式设计输出。向版本添加 UIHint 属性以便使用它。

You could also create an EditorTemplate named Version and design the output how you see fit. add a UIHint attribute to version in order to use it.

我很坚强 2024-10-22 08:18:34

byte[]EditorForModel 方法视为复杂类型,目前无法显示这些类型。您可以尝试向模型添加另一个属性(例如,输入为 string),该属性将从您的 Version 属性中读取和写入。

A byte[] is considered to be a complex type by the EditorForModel method and there currently is no way for those to be displayed. You could try adding another property to your model (typed as string for example) that would read from and write to your Version property.

静谧幽蓝 2024-10-22 08:18:34

最好编写自己的模板(Object.ascx)。
复制标准 MVC Object.ascx 模板并将 ShouldShow Method 更改为:

 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);
  }

Better write your own template (Object.ascx).
Copy the standard MVC Object.ascx template and change the ShouldShow Method to:

 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);
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文