Domanda

Descrizione

Ho una pagina di pagamento che include un modulo per l'inserimento di informazioni sul conto bancario. Ho incapsulato i dati del conto bancario in un Template Editor Modello /. La pagina stessa ha un proprio Modello View, che sembra contenere una proprietà BankAccount da passare in all'Editore.

[[Visualizza i modelli]]

public class PaymentPageModel { 
    public SomeProperty1 { get; set; }
    public SomeProperty2 { get; set; }
    public BankAccount BankAccount { get; set; }
    ...
}

public class BankAccount { 
    public int BankAccountTypeID { get; set; }
    public string BankName { get; set; }
    public string ABACode { get; set; }
    public string AccountNumber { get; set;}
    public IEnumerable<SelectListItem> BankAccountTypes {
        get { ... // Constructs the list }
    }
}

[[pagamento Pagina HTML]]

<% using (Html.BeginForm()) { %>
<%: Html.EditorFor(m => m.BankAccount) %>
    ... // Other miscellaneous stuff not related to the actual BankAccount
<% } %>

[[Template Editor]

...
<%: Html.DropDownListFor(m => m.BankAccountTypeID, Model.BankAccountTypes) %>
...

problema

Inizialmente, questo ha funzionato perfettamente quando mi è stato fortemente scrivendo la pagina di pagamento direttamente al modello BankAccount. L'elenco a discesa veniva popolato correttamente, e veniva selezionato il valore corretto dal modello.

Recentemente ho modificato nella pagina, fortemente digitando al PaymentPageModel, che contiene il modello BankAccount come una proprietà. Il codice HTML non è stato modificato. Il risultato ora, è che tutti i valori HTML in Editor modello vengono popolati correttamente, fatta eccezione per la DropDownList. Si è vincolante l'elenco di valori correttamente dalle BankAccountTypes selezionare la lista, ma il valore selezionato non viene legato. Ho controllato per assicurarsi che il valore che si suppone che sia vincolante per sia impostata correttamente tramite emissione è proprio accanto al DropDownList.

Questa è la guida mi noci, e mi sta facendo davvero in discussione l'affidabilità del modello vincolante e HTML Helpers in generale, soprattutto se non sono in grado di combinare modelli vista complessi con Editor modelli di presentazione incapsulare / funzionalità.

Tutti i suggerimenti sono molto apprezzate.

È stato utile?

Soluzione

Se si è fortemente tipizzato l'editor di modelli per PaymentPageModel nella visualizzazione principale, invece di:

<%: Html.EditorFor(m => m.BankAccount) %>

si potrebbe provare:

<%: Html.EditorForModel() %>

e nel vostro editor di modelli:

<%: Html.DropDownListFor(m => m.BankAccount.BankAccountTypeID, 
    Model.BankAccount.BankAccountTypes) %>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top