Pregunta

Descripción

Tengo una página de pago que incluye un formulario para introducir información de cuenta bancaria. He encapsulada la información de la cuenta bancaria en una plantilla de modelo / Editor. La página en sí tiene su propio punto de vista del modelo, que pasa a contener una propiedad CuentaBancaria para ser aprobada en al editor.

[[Visualización de modelos]]

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 }
    }
}

[[Pago página 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:

En un principio, esto funcionó perfectamente cuando estaba fuertemente escribiendo la página de pago directamente al modelo CuentaBancaria. La lista desplegable se estaba poblada apropiadamente, y estaba siendo seleccionado el valor correcto a partir del modelo.

Hace poco modificado la página, fuertemente escribiéndolo a la PaymentPageModel, que contiene el modelo de CuentaBancaria como una propiedad. El HTML no se ha modificado. El resultado ahora, es que todos los valores HTML en el Editor de plantillas se rellenan correctamente, a excepción de la DropDownList. Es vinculante la lista de valores correctamente desde los BankAccountTypes lista de selección, pero no se está obligado al valor seleccionado. He comprobado para asegurarse de que el valor que se supone que es la unión a está en posición correcta mediante la salida justo al lado de la DropDownList.

Esto me está volviendo frutos secos, y me está haciendo realmente en duda la fiabilidad del modelo de unión y HTML ayudantes en general, sobre todo si no soy capaz de combinar modelos de vista complejos con el editor de plantillas de presentación encapsulado / funcionalidad.

Cualquier sugerencia es muy apreciada.

¿Fue útil?

Solución

Si ha introducido fuertemente el editor de plantillas de PaymentPageModel en la vista principal en lugar de:

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

usted podría intentar:

<%: Html.EditorForModel() %>

y en su editor de plantillas:

<%: Html.DropDownListFor(m => m.BankAccount.BankAccountTypeID, 
    Model.BankAccount.BankAccountTypes) %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top