从生成的类生成数据注释

时间:2010-02-24 23:49:38

标签: asp.net-mvc-2 data-annotations asp.net-mvc-2-validation

我有一个linq到sql对象或者是否有必要的Entity Framework对象。

我想为他们做MVC 2数据注释,但我无休止地懒惰。

有没有办法自动生成数据注释a-la

[Bind(Include = "Title,Description,EventDate,Address,Country,ContactPhone,Latitude,Longitude")]
[MetadataType(typeof(Dinner_Validation))]
public partial class Dinner
{
    public bool IsHostedBy(string userName)
    {
        return HostedBy.Equals(userName, StringComparison.InvariantCultureIgnoreCase);
    }

    public bool IsUserRegistered(string userName)
    {
        return RSVPs.Any(r => r.AttendeeName.Equals(userName,     StringComparison.InvariantCultureIgnoreCase));
    }
}

public class Dinner_Validation
{
    [Required(ErrorMessage = "Title is required")]
    [StringLength(50, ErrorMessage = "Title may not be longer than 50 characters")]
    public string Title { get; set; }

    [Required(ErrorMessage = "Description is required")]
    [StringLength(265, ErrorMessage = "Description may not be longer than 256 characters")]
    public string Description { get; set; }

    [Required(ErrorMessage = "HostedBy is required")]
    public string HostedBy { get; set; }

    [Required(ErrorMessage = "Address is required")]
    public string Address { get; set; }

    [Required(ErrorMessage = "Country is required")]
    public string Country { get; set; }

    [Required(ErrorMessage = "Phone# is required")]
    public string ContactPhone { get; set; }
}

所以我自己不必全部完成这项工作?

2 个答案:

答案 0 :(得分:0)

我认为生成数据注释是多余的。

相反,我建议编写一个关联的元数据提供程序,它只会导致MVC模型绑定和验证,以查看类型的正确元数据,而根本不需要数据注释(或者将补充您可能已经拥有的任何数据注释) 。

There's an example here

答案 1 :(得分:0)

我从我的Silverlight工具箱中借了一点,但它似乎对VS2010中的MVC3没问题。

  1. 编译您的项目。如果您刚刚创建了Entity Framework模型,这很重要。
  2. 右键单击您的项目。单击“添加/新项”。
  3. 选择“域服务类”作为类型。单击“添加”。
  4. 在下拉列表中选择您的型号。
  5. 在实体列表中,选择您想要数据注释的所有对象。
  6. 选中标记为“为元数据生成关联类”的复选框。单击“确定”。
  7. 您将获得两个课程。只需删除没有.metadata的那个。标签
  8. 应该这样做。您现在应该准备好元数据类来添加注释。 (上面使用的域服务类可能与VS2010中的WCF RIA Services工具包一起安装。对此没有好评,但如果你的可用项目列表中没有这个,那可能就是问题了。)