Проблема привязки выбранного значения к DropDownListFor внутри шаблона редактора - PullRequest
0 голосов
/ 20 октября 2010

Описание

У меня есть платежная страница с формой для ввода информации о банковском счете. Я инкапсулировал информацию о банковском счете в шаблон модели / редактора. Сама страница имеет свою собственную модель представления, которая содержит свойство BankAccount, которое передается в редактор.

[[Просмотр моделей]]

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

[[HTML-код страницы оплаты]]

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

[[Шаблон редактора]

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

Задача

Первоначально это работало идеально, когда я строго набирал страницу «Платежи» непосредственно в модели BankAccount. Раскрывающийся список был заполнен правильно, и было выбрано правильное значение из модели.

Я недавно изменил страницу, строго напечатав ее в PaymentPageModel, которая содержит модель BankAccount в качестве свойства. HTML не был изменен. В результате все значения HTML в шаблоне редактора заполняются правильно, за исключением DropDownList. Он правильно связывает список значений из списка выбора BankAccountTypes, но выбранное значение НЕ привязывается. Я проверил, чтобы убедиться, что значение, которое он должен связывать с IS, установлено правильно, выводя его прямо рядом с DropDownList.

Это сводит меня с ума и заставляет меня усомниться в надежности связывания моделей и помощников HTML в целом, особенно если я не могу объединить модели сложных представлений с шаблонами редактора для инкапсуляции представления / функциональности.

Любые предложения приветствуются.

1 Ответ

0 голосов
/ 20 октября 2010

Если вы строго набрали шаблон редактора на PaymentPageModel в главном окне вместо:

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

Вы можете попробовать:

<%: Html.EditorForModel() %>

и в шаблоне вашего редактора:

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