ASP.NET MVC 2 Modello Binding: Come eseguire il debug di un modello parzialmente fallito vincolante sul retro post?

StackOverflow https://stackoverflow.com/questions/3406967

  •  25-09-2019
  •  | 
  •  

Domanda

Abbiamo avuto una vista del modello che si presentava così:

public class myViewModel {
    public Contract contract {get;set;}
    public Vendor vendor {get;set;}
}

public class Contract {
    public int contractID {get;set;}
    // ... various string properties
    public IList<ContractDetail> contractDetails {get;set;}
    pubilc Vendor vendor {get;set;}
}

Di ritorno dalla forma è stato il contratto a termine.

[HttpPost]
public ActionResult Edit(Contract contract) { ... }

Tutto ha funzionato valori forma post-binding di nuovo per le proprietà dei parametri del contratto.

Quando ci siamo trasferiti fornitore a contratto come un oggetto di valore, tutti al primo livello proprietà "primitivi" del contratto non riescono a impegnare. Tutto l'IList <> proprietà vanno bene.

Tutte le idee o che cosa ulteriori informazioni ci sarebbe bisogno di risolvere questo enigma? C'è un modo per testare come MVC lega i valori della forma Indietro ai parametri degli oggetti? È la soluzione qualcosa a che fare con il fornitore non essendo un IList, vale a dire, perché sarebbe la multa proprietà IList lavoro?

Modifica:

La correzione era di specificare i nomi assolutamente gerarchia di oggetti in tutti i campi, per esempio, per il nome del fornitore di bind, ha richiesto un nome di "Contract.vendor.name". Questo prefisso è stato fatto per noi utilizzando il ViewModel, ma non fatto per noi utilizzando il Modello di contratto. Abbiamo finito per fare questo per tutti i modelli di visualizzazione (vista parziale):

EditorFor(m => m.vendor, "Vendor", "Contract.vendor")

dove "Venditore" è il nome del EditorTemplate "Vendor.ascx" e "Contract.vendor" prefissi tutti i nomi dei campi modulo.

Credo perché il ViewModel annidato tutti i dati, ha causato MVC a prefisso correttamente tutte le proprietà. Ciò significherebbe che "sciolti" campi di modulo non qualificati, i prefissi degli oggetti non si legano agli oggetti parametro con nome.

È stato utile?

Soluzione

Basta scaricare il MVC codice sorgente , fare un riferimento al progetto ed eseguire il debug attraverso il legante di default.

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