MVC如何将MetaData添加到类中

时间:2012-07-02 06:11:40

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

我使用MVC 3和EF 4.3.1。

我使用POCO创建了我的类,我正在使用元数据在我的属性上添加DataAnnotations。

我正在使用Scaffolding EF生成控件和视图。

我的问题:

  • 测试网站OptionId(是一个PK IDENTITY)显示为TextField。我需要隐藏此属性并确保自动创建值。

  • [StringLength(256)]不起作用且在View中没有ClientValidation

我在这里做错了什么?

感谢您对此的帮助

 using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.ComponentModel.DataAnnotations;
    using System.Web.Mvc;

    namespace MyProject.Models
    {
        [MetadataType(typeof(ReOptionMetaData))]
        public partial class ReOption
        {
            private class ReOptionMetaData
            {
                [Key]
                public int OptionId { get; set; }
                [Required]
                [StringLength(64)]
                public string Name { get; set; }
                public string Value { get; set; }
                [Required]
                [StringLength(256)]
                public string Description { get; set; }
                [StringLength(256)]
                public string NoteInternal { get; set; }    
            }
        }
    }

2 个答案:

答案 0 :(得分:2)

  

测试网站OptionId(是一个PK IDENTITY)显示为   文本域。我需要隐藏此属性并确保创建该值   自动。

在元数据中,您可以使用HiuddenInput属性生成隐藏输入而不是文本字段:

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

[StringLength(256)]不起作用,并且在View中没有ClientValidation

确保您已将jquery.validate.jsjquery.validate.unobtrusive.js脚本包含在您的网页中。

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

并且您已在web.config中启用了不显眼的客户端脚本验证:

<appSettings>
    <add key="ClientValidationEnabled" value="true"/>
    ...
</appSettings>

答案 1 :(得分:1)

您可以使用ScaffoldColumnAttribute不支持OptionId列。