2011-03-21 79 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