将 UIHint 与 LINQ to SQL 生成的类结合使用

发布于 2024-11-11 08:01:40 字数 206 浏览 1 评论 0原文

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

I used LINQ to SQL to generate a dbml file which contains the database model for my database table. I want to use UIHint to let MVC present some fields as DropDownLists or Checkboxes in edit mode. But if I change the file, it will be lost if it's been regenerated. How should I solve that issue? I'm quite new to MVC and still learning. I've set up a controller with views for all CRUD elements, but now I'm finetuning and I'm running into this problem.

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

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

发布评论

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

评论(2

北城半夏 2024-11-18 08:01:40

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

在给出的示例中:

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

    使用 System.ComponentModel.DataAnnotations;
    
    命名空间项目.模型
    {
      [元数据类型(typeof(ProductsMeta))]
      公共部分类产品
      {
        // 如果需要,您可以在此处扩展产品类。
    
        公共类ProductsMeta
        {
          // 这是一个 Linq-to-Sql Buddy 类      
          // 在这里您可以将 DataAnnotations 添加到自动生成的分部类中
    
          [钥匙]
          公共 int ProductKey { 获取;放; }
    
          [显示(名称=“产品名称”)]
          [必填(ErrorMessage = "产品名称必填")]
          [StringLength(255, ErrorMessage = "必须少于 255 个字符")]
          公共字符串产品名称{获取;放; }
    
          [UIHint("多行文本")]
          公共字符串描述{获取;放; }
        }
      }
    }
    

这些文章非常有帮助:

  1. ScottGu:ASP.NET MVC 2:模型验证
  2. 如何:使用 DataAnnotations 属性验证模型数据
  3. 使用数据注释验证器进行验证

Since Linq-to-SQL auto-generates partial classes, you'll need to create a partial 'buddy class' where you will add your Data Annotations. Your buddy class mirrors portions of the auto-generated class that you need to modify. You tie them together with [MetadataType(typeof(BuddyClassName))] The partial buddy class and the auto-generated partial class will be merged together when you compile your project.

In an example given that:

  • Your namespace is "Project.Models"
  • Your Linq-To-Sql class is called "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; }
        }
      }
    }
    

These articles were very helpful:

  1. ScottGu: ASP.NET MVC 2: Model Validation
  2. How to: Validate Model Data Using DataAnnotations Attributes
  3. Validating with Data Annotation Validators
故事和酒 2024-11-18 08:01:40

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

If you are going to use the entities directly you should create a partial class and add your annotations there. This way when the model is regenerated you will not lose your annotations.

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