2015-03-06 12 views
9

Sto cercando di escludere una proprietà dalla mia azione post in un controller web API, c'è qualcosa come [Bind(Exclude="Property")] per asp.net web API?Esiste qualcosa come [Bind (Exclude = "Proprietà")] per asp.net web api?

Questo è il mio modello:

public class ItemModel 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

voglio escludere la Id nell'azione Post, perché è generato automaticamente, ma ho bisogno di tornare nel mio Get azione.

So che potrei avere due modelli, uno per la mia azione Post e uno per la mia azione Get, ma sto cercando di farlo con un solo modello.

+0

può impostare Id su un valore null int – pnm

risposta

0

avrei favorire modelli di mappatura, ma questo potrebbe essere realizzato controllando se la richiesta è un post in un metodo di ShouldSerialize:

public class MyModel 
{ 
    public string MyProperty1 { get; set; } 
    public string MyProperty2 { get; set; } 

    public bool ShouldSerializeMyProperty2() 
    { 
     var request = HttpContext.Current.Request; 

     if (request.RequestType == "POST") return false; 

     return true; 
    } 
} 

Dove il nome del metodo è il nome della proprietà prefisso ShouldSerialize.

Nota questo funzionerà per JSON. Per XML, dovrai aggiungere la seguente riga alla tua configurazione:

config.Formatters.XmlFormatter.UseXmlSerializer = true;