【问题标题】:Using UIHint in combination with LINQ to SQL generated class结合使用 UIHint 和 LINQ to SQL 生成的类
【发布时间】:2011-05-31 11:27:10
【问题描述】:

我使用 LINQ to SQL 生成了一个 dbml 文件,其中包含我的数据库表的数据库模型。我想使用 UIHint 让 MVC 在编辑模式下将某些字段呈现为 DropDownLists 或 Checkboxes。但是如果我更改文件,如果重新生成它就会丢失。我应该如何解决这个问题?我对 MVC 很陌生,还在学习。我已经为所有 CRUD 元素设置了一个包含视图的控​​制器,但现在我正在微调并且遇到了这个问题。

【问题讨论】:

    标签: asp.net-mvc-3 linq-to-sql c#-4.0 asp.net-4.0


    【解决方案1】:

    由于 Linq-to-SQL 会自动生成部分类,因此您需要创建一个部分“伙伴类”,您将在其中添加数据注释。您的伙伴类反映了您需要修改的自动生成类的部分。您将它们与 [MetadataType(typeof(BuddyClassName))] 绑定在一起。当您编译项目时,部分伙伴类和自动生成的部分类将合并在一起。

    举个例子:

    • 您的命名空间是“Project.Models”
    • 您的 Linq-To-Sql 类称为“Products”

      using System.ComponentModel.DataAnnotations;
      
      namespace Project.Models
      {
        [MetadataType(typeof(ProductsMeta))]
        public partial class Products
        {
          // You can extend the products class here if desired.
      
          public class ProductsMeta
          {
            // This is a Linq-to-Sql Buddy Class      
            // In here you can add DataAnnotations to the auto-generated partial class
      
            [Key]
            public int ProductKey { get; set; }
      
            [Display (Name = "Product Name")]
            [Required(ErrorMessage = "Product Name Required")]
            [StringLength(255, ErrorMessage = "Must be under 255 characters")]
            public string ProductName { get; set; }
      
            [UIHint("MultilineText")]
            public string Description { get; set; }
          }
        }
      }
      

    这些文章很有帮助:

    1. ScottGu: ASP.NET MVC 2: Model Validation
    2. How to: Validate Model Data Using DataAnnotations Attributes
    3. Validating with Data Annotation Validators

    【讨论】:

    • 非常感谢!由于障碍,花了一些时间阅读您的帖子,但今天,我使用了您的示例,效果很好。我将阅读文章为下拉控件创建自定义模板。几周前我找到了创建它们的方法,所以我想我会再次找到它们。我没有声望,所以我不能给你投票。
    • 欢迎您。我发现这个网站对我自己的项目非常有价值。
    【解决方案2】:

    如果你打算直接使用实体,你应该创建一个部分类并在那里添加你的注释。这样,当模型重新生成时,您不会丢失注释。

    【讨论】:

    • 如果我这样做,我可以使用相同的对象名称,并且 VS 会合并两个声明吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多