2017-05-31 102 views
0

如何禁用已在模型屬性上設置的[Required]屬性。如何禁用Web api模型中屬性的必需屬性?

我使用new關鍵字嘗試了以下代碼,但無法正常工作。

我也試過override關鍵字以及沒有工作。

ChildModel使用BaseModel的大部分屬性,而不是創建新的模型文件並編寫許多類似的屬性我正在考慮做這樣的事情。

public class BaseModel 
{ 
    [Required] 
    public string Address{ get; set; } 
} 


public class ChildModel : BaseModel 
{ 
    public new string Address{ get; set; }  
} 

任何簡單的解決方案?

+0

這個以前的問題應該會幫助你:[https://stackoverflow.com/questions/8903838/is-it-possible-to-override-the-required-attribute-on-a-property-in-a-模型?RQ = 1](https://stackoverflow.com/questions/8903838/is-it-possible-to-override-the-required-attribute-on-a-property-in-a-model?rq=1 ) – ZippyZippedUp

+0

我試過,但它不工作:(基地和派生的解決方案。 這是什麼?[MetadataType(typeof(Base.Metadata))]??任何評論? – Neo

+0

你在[https:// stackoverflow的.com /問題/ 8903838/IS-IT-可能對覆蓋最需要屬性上-A-屬性功能於一個模型?RQ = 1](https://stackoverflow.com/questions/ 8903838 /是否可以重寫-a-model-property-in-a-model?rq = 1)這適用於我。 – ZippyZippedUp

回答

1

只需在屬性上使用new關鍵字重寫或重新聲明並刪除屬性即不起作用。我一直這樣做的方法是像下面:

public abstract class BaseModel 
{ 
    public abstract string Address { get; set; } 
} 


public class ChildModel : BaseModel 
{ 
    [Required] 
    public override string Address { get; set; } 
} 

public class AnotherChildModel : BaseModel 
{ 
    //Not[Required] 
    public override string Address { get; set; } 
} 

您可以閱讀this線程,如果你想知道更多關於基類的屬性是如何繼承的過程中處理。