2011-03-21 50 views
1

我类似于以下内容带有实例的属性的必需属性

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; } 
} 

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

编辑:我不想添加Bas所描述的自定义属性。我有一个EntityNameId的自定义局部视图,允许它可重用。

+0

支票本了这一点,我已经回答了这里这个问题 http://stackoverflow.com/a/24757520/3050647 – elia07 2014-07-15 12:14:43

回答

0

一种选择是增加一个属性PersonViewModel结合的组织属性:

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

我不想这样做,因为我有一个名为'自定义局部视图EntityNameId' 。 – 2011-03-21 18:44:42

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属性?

+0

我不希望它在所有情况下都是必需的。 – 2011-03-22 16:24:39

+0

抱歉令人失望... – takepara 2011-03-22 16:29:36