2017-05-31 4 views
0

So deaktivieren Sie das [Required] Attribut, das für eine Modelleigenschaft festgelegt wurde.Wie kann ich das erforderliche Attribut für eine Eigenschaft in einem Modell in Web-API deaktivieren?

Ich versuchte mit unten Code mit new Schlüsselwort, aber nicht funktioniert.

Ich versuchte auch override Schlüsselwort als auch nicht funktioniert.

ChildModel verwendet die meisten Eigenschaften von BaseModel das ist statt neue Modelldatei zu erstellen und Code viele ähnliche Eigenschaften, die ich denke, etwas zu tun.

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


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

Eine einfache Lösung?

+0

Diese vorherige Frage sollte Ihnen helfen: [https://stackoverflow.com/questions/8903838/is-it-possible-to-override-the-required-attribute-on-a-property-in-a-- Modell? 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

Ich habe versucht, aber es funktioniert nicht :(Basis-und abgeleitete Lösung. Was ist das '[MetadataType (typeof (Base.Metadata))]'? Kommentar? – Neo

+0

Haben Sie versucht @ Saito Antwort in [https: // Stackoverflow .com/questions/8903838/is-it-possible-over-the-required-Attribut-on-a-property-in-a-model? rq = 1] (https://stackoverflow.com/questions/ 8903838/ist-es-möglich-zu-Überschreiben-das-erforderliche-Attribut-auf-einer-Eigenschaft-in-einem-Modell? Rq = 1) Das funktioniert gut für mich. – ZippyZippedUp

Antwort

1

Einfaches Überschreiben oder Neudefinieren mithilfe des Schlüsselworts new in der Eigenschaft und Entfernen des Attributs funktioniert nicht. So wie ich das immer getan haben, ist wie unten .:

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

Sie this Thread lesen können, wenn Sie mehr darüber, wie Attribute einer Basisklasse wissen wollen, werden während der Vererbung behandelt.

Verwandte Themen