0

我使用 MVC 3 和 EF 4.3.1。

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

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

我的问题:

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

  • [StringLength(256)] 不起作用,并且在视图中没有 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; }    
            }
        }
    }
4

2 回答 2

2

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

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

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

[StringLength(256)] 不起作用,并且在视图中没有 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>
于 2012-07-02T06:17:45.100 回答
1

您可以使用ScaffoldColumnAttribute不为 OptionId 列搭建基架。

于 2012-07-02T06:16:08.723 回答