2015-02-22 7 views
5

Ho installato il percorso da: [Rotta ("{id}/utenti/ricerca/{search}")] e l'azione associata è: SomeAction (int id, testo stringa)Web GET

Il servizio ha la seguente funzione. per la risorsa con id = {id} e gli utenti di questa risorsa ottengono gli utenti che corrispondono al termine {search} (nome utente, indirizzo email ecc.).

{search} può avere un valore in modo che il servizio restituisca solo le entità corrispondenti o non abbia un valore (stringa vuota o null) in modo che il servizio restituisca tutto.

Per la parte con un valore funziona correttamente. Per la seconda parte non riesco a trovare qualcosa per impostare la richiesta di ottenere che corrisponde alla stringa vuota.

Ho provato quanto segue: 1/utenti/ricerca/null {search} = "null" 1/utenti/ricerca/non corrisponde percorso 1/utenti/ricerca non corrisponde percorso

ha qualcuno un suggerimento su come questo potrebbe essere fatto?

Aggiornamento: Ho provato a sostituire l'azione: SomeAction (int id, string text) con: SomeAction (modello Model) in cui il modello è

public class ApplicationUserSearchModel 
{ 
    [Required] 
    public int Id { get; set; } 
    [Required(AllowEmptyStrings = true)] 
    public string MatchText { get; set; } 
} 

senza fortuna dal momento che non lo faccio sapere cosa inviare per abbinare l'url a questo.

risposta

4

È necessario contrassegnare il parametro search con ? per contrassegnarlo come facoltativo nel percorso e impostarlo su null per impostazione predefinita nell'azione.

[Route("{id}/users/search/{search?}")] 
public HttpResponseMessage Search(int id, string search = null)  

Ho inizialmente pensato i nomi dei parametri percorso/azione sono stati il ​​problema, ma non era corretto. Ecco la risposta precedente:

I nomi dei parametri nella definizione del percorso e l'azione non corrispondono, il che causa il problema.

[Route("{id}/users/search/{search}")] 
public HttpResponseMessage Search(int id, string text) 

Si consiglia di aggiornare il parametro string nella vostra azione text-search, per abbinare il nome del parametro nella attributi Route.

+0

il problema non è il servizio stesso. funziona bene data la rotta sopra come chiami questo servizio con il bind {search} su una stringa vuota è la domanda! – Mantzas

+0

lo proverò ma penso di aver già avuto fortuna. Ancora non so come chiamare il servizio per ottenere questo risultato. Qualche idea su come lo fai, visto che il tuo sembra funzionare? – Mantzas

+0

Dovresti poter accedere a questo percorso chiamando GET http: // sito web/1234/utenti/ricerca o OTTIENI http: // sito web/1234/utenti/ricerca/nome% 20lastname – MattHughesATL