Domanda

mi sembra di avere un problema con ottenere MVC per riempire nel mio parametro del modello personalizzato quando viene chiamato attraverso GET invece di POST.

Ho un frammento di codice JavaScript che chiama in un'azione in questo modo:

$.getJSON('<%= Url.Action("DoSearch") %>' + location.search,
    function(data) {
        if (data.Result == "OK") {
            location.href = location.href;
        }
    });

Ciò che fa, è fondamentalmente chiamare un'azione separata, passandogli gli stessi querystrings come pagina chiamante. Poi, se il risultato è "OK", si aggiorna la pagina corrente.

L'azione è definito come il seguente:

    public ActionResult DoSearch(SearchParameters searchParameters)

Il modello è:

public class SearchParameters
{
    public string Query;
    ...
}

URL Calling (verificato con Firebug) è come /DoSearch?Query=some+query. (Anche provato /DoSearch?searchParameters.Query=some+query senza successo)

Non importa quello che ho provato, il mio parametro viene sempre come vuoto (non nullo, solo tutti i parametri in fase di inizializzazione sui valori predefiniti)

Se io definisco l'azione come questo, invece:

    public ActionResult DoSearch(string Query, ...)

Poi i miei parametri vengono riempiti correttamente. Non con il modello tuttavia.

Presumo:

a) che popolano il modello a oggetti non funziona per le richieste GET.

b) che sto facendo qualcosa di sbagliato

Tutte le idee? Grazie.

È stato utile?

Soluzione

È necessario proprietà pubbliche per legare su una classe.

sostituire

public string Query;

con

public string Query{get;set;}

Almeno questo è quello che ho dovuto fare per farla funzionare nel mio progetto .. non so se avete un altro problema pure. Oh, e ho usato GET e così dovrebbe funzionare.

Questa è la mia classe Parametri:

public class Parameters
{
    public int? page { get; set; }
    public int? pageSize { get; set; }
    public string[] columnsToDisplay { get; set; }
    public string columnToSort { get; set; }
    public bool? descending { get; set; }
}

Non legarsi con i campi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top