2

我有一个 linq to sql 对象或必要的实体框架对象。

我想为他们做 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; }
}

这样我就不必自己做这一切了吗?

4

2 回答 2

0

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

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

这里有一个例子

于 2010-03-03T19:02:27.700 回答
0

为此,我从我的 Silverlight 工具箱中借了一点,但它似乎对 VS2010 中的 MVC3 工作得很好。

  1. 编译你的项目。如果您刚刚创建了实体框架模型,这一点很重要。
  2. 右键单击您的项目。单击添加/新项目。
  3. 选择“域服务类”作为类型。单击添加。
  4. 在下拉列表中选择您的模型。
  5. 在实体列表中,选择要为其添加数据注释的所有对象。
  6. 选中标有“为元数据生成关联类”的框。单击确定。
  7. 您将生成两个类。只需删除没有.metadata 的那个。标签。

那应该这样做。您现在应该有一个准备好添加注释的元数据类。(上面使用的域服务类可能是与 VS2010 中的 WCF RIA 服务工具包一起安装的。对此并不乐观,但如果你的可用项目列表中没有这个,那可能就是问题所在。)

于 2011-03-20T04:36:39.240 回答