带有实例的属性的必需属性

时间:2011-03-21 18:23:12

标签: asp.net-mvc

我类似于以下内容

class EntityNameId
{
    public string Name { get; set; }
    public string Id { get; set; }
}

class OrganizationNameId : EntityNameId
{
}

class PersonViewModel
{
    public PersonViewModel()
    {
        Organization = new OrganizationNameId();
    }
    OrganizationNameId Organization { get; }
}

如何在Required中为PersonViewModel设置OrganizationNameId.Id属性,以便客户端验证有效?我不想将其放在OrganizationNameIdEntityNameId中,因为它并不总是必需的,但PersonViewModel需要它。我正在使用MVC 3。

修改:我不想按Bas所述添加自定义属性。我有EntityNameId的自定义部分视图,允许它可以重复使用。

2 个答案:

答案 0 :(得分:0)

一个选项是向PersonViewModel添加一个属性,该属性绑定到组织属性:

[Required]
public int OrganizationId {
   get { return Organization.Id; }
   set { Organization.Id = value }
}

答案 1 :(得分:0)

public class EntityNameId
{
    public string Name { get; set; }
    public string Id { get; set; }
}

[MetadataType(typeof(OrganizationNameIdMetadataType))]
public class OrganizationNameId : EntityNameId
{
}

public class PersonViewModel
{
    public PersonViewModel()
    {
        Organization = new OrganizationNameId();
    }
    public OrganizationNameId Organization { get; private set; }
}

public class OrganizationNameIdMetadataType
{
    [Required]
    public object Id { get; set; }
}

Customizing ASP.NET MVC 2 - Metadata and Validation

如何使用MetadataType属性?