2015-10-27 19 views
9

Secondo http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx#optionals-and-defaultsAttribute Routing - parametro opzionale non funzionante?

È possibile avere parametri opzionali aggiungendo un punto interrogativo (?) Quando si utilizza il routing degli attributi. Tuttavia non funziona per me (ASP.NET Web API 5).

[Route("staff/{featureID?}")] 
    public List<string> GetStaff(int? featureID) { 
     List<string> staff = null;   
     return staff; 
    } 

Se uso staff/1 ecc funziona bene, se uso /staff ho la solita:

"No risorsa HTTP è stato trovato che corrisponde l'URI della richiesta ..."

"Non è stata trovata alcuna azione sul controller che corrisponda alla richiesta ".

Mi manca un riferimento o qualcosa del genere? O stai sbagliando?

risposta

1

Se lo faccio:

[Route("staff/{featureID=null}")]

invece di

[Route("staff/{featureID?}")]

Funziona.

Tecnicamente questo non risponde alla mia domanda ma mi fa lavorare!

8

Ho riscontrato anche lo stesso problema e l'ho risolto in modo leggermente diverso. Tuttavia, ancora non ha funzionato per me come previsto in quel post del blog. Invece di aggiungere il valore del parametro predefinito nella definizione del percorso, l'ho aggiunto alla definizione della funzione.

ho dovuto fare questo per la mia esempio funzioni correttamente perché Io sto usando un string invece di un int e aggiungendo il valore di default nella definizione percorso di null causato il mio parametro di funzione per avere il valore di stringa "null".

[Route("staff/{featureID?}")] 
public List<string> GetStaff(int? featureID = null) { 
    List<string> staff = null;   
    return staff; 
} 
+0

Guardando questo, ha perfettamente senso come argomento opzionale su un metodo normale sarebbe stato fatto in quel modo, buona conoscenza da parte "null", così –

4

Questo perché è sempre necessario impostare un valore predefinito per un parametro facoltativo, anche se il valore predefinito è null. Questo è il motivo per cui questo funziona:

[Route("staff/{featureID=null}")] 
+6

allora perché avere il ' ?' funzionalità del personaggio? – Sal