Utilizzo il binding del modello API Web per analizzare i parametri di query da un URL. Ad esempio, ecco una classe del modello:Modifica del nome del parametro Associazione del modello Web Api
public class QueryParameters
{
[Required]
public string Cap { get; set; }
[Required]
public string Id { get; set; }
}
Questo funziona bene quando chiamo qualcosa come /api/values/5?cap=somecap&id=1
.
C'è qualche modo posso cambiare il nome della proprietà nella classe del modello, ma mantenere il nome del parametro di query lo stesso - per esempio:
public class QueryParameters
{
[Required]
public string Capability { get; set; }
[Required]
public string Id { get; set; }
}
ho pensato di aggiungere [Display(Name="cap")]
alla proprietà Capability
avrebbe funzionato, ma non è così. C'è qualche tipo di annotazione dei dati che dovrei usare?
Il controller sarebbe avere un metodo che si presentava così:
public IHttpActionResult GetValue([FromUri]QueryParameters param)
{
// Do Something with param.Cap and param.id
}
[Commento eliminato] – user2966445
È possibile che un qualsiasi downgoter spieghi cosa c'è di sbagliato in questa risposta? –
+1 Funziona per me, anche se ho contrassegnato l'attributo DataMember solo su proprietà con nomi di parametri diversi dal nome della proprietà. Pertanto, avevo bisogno di separare la chiamata del metodo GetValue e il riferimento AttemptedValue, e posto un controllo nullo sulla proprietà, altrimenti rischierai una NullReferenceException. Probabilmente non è una cattiva idea a prescindere :) – si618