2011-01-17 15 views
0

Я учусь и сумел создать приятную информационную страницу с отображением списков транзакций. Однако у меня нет добавленного окна DropDown, в котором есть список банковских счетов. Это не соответствует всем.ASP.Net MVC возвращающее значение DropDown

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

я создал падение вниз, и форму для нее, как это:

<form id="form1" runat="server"> 
<h2> 
    Transactions:</h2> 
<p> 
    <% 
     using (Html.BeginForm()) 
     { 
    %> 
    Bank Account: 
    <% =Html.DropDownList("ddAccounts", Model.BankAccountItems)%> <input id="Submit1" type="submit" value="Select" />  
    <% 
     } 
    %> 
</p> 
</form> 

Моя модель содержит следующее:

public class AccountTransactionDisplay 
{ 
    public AccountTransactionDisplay() 
    { 
     DisplayLines = new List<AccountTransactionDisplayLine>(); 
    } 

    public SelectList BankAccountItems { get; set; } 
    public List<AccountTransactionDisplayLine> DisplayLines {get; set; } 
    public string ClosingBalance { get; set; } 
} 

public class BankAccountDropdownItem 
{ 
    public string Text {get; set;} 
    public string Value {get; set;} 
} 

public class AccountTransactionDisplayLine 
{ 
    public string RowColouring { get; set; } 
    public string TransactionDate { get; set;} 
    public string PayeeName { get; set; } 
    public string Amount { get; set; } 
    public bool AmountIsDebit { get; set; } 
    public string CategoryName { get; set; } 
    public string CostCenterName { get; set; } 
    public string BudgetName { get; set; } 
    public string RunningTotal { get; set; } 
    public bool RunningTotalIsDebit { get; set; } 
    public bool AlternateRowColour { get; set; } 
    public bool HasSplitItems { get; set; } 
} 

Итак, AccountTransactionDisplay является модель перехожу к просмотру , В этой модели у меня есть следующее:

public SelectList BankAccountItems { get; set; } 

Это список элементов, отображаемых в моем раскрывающемся списке. Это отображается правильно.

Однако, когда пользователь нажимает кнопку отправки, я не уверен, как вернуть выбранное значение.

Я думал, что есть метод в мой контроллер, который принимает POST ... Итак, я прибавил:

 [HttpPost] 
    public ActionResult Transactions(AccountTransactionDisplay model) 
    { 
     AccountTransactionDisplay trans = GetTransactions(); 
     return View(trans); 
    } 

И если я поставил точку останова, он бьет, но его похоже модель пуста. Мне нужно добавить идентификатор выбранной учетной записи из метода GetTransactions, чтобы выполнить фильтрацию.

ответ

2

Когда ваша страница отображается, просмотрите источник. Независимо от атрибута name элемента select, то есть имя свойства, которое вам нужно добавить в вашу модель, тогда связующее устройство будет привязывать это значение к вашей модели. Когда форма отправляется, только пара имени/значения полей формы представляется (по большей части), поэтому имя элемента select будет находиться в данных формы и его выбранном значении, все параметры не отправляются обратно , поэтому MVC не имеет возможности переназначить ваше свойство SelectList.

HTH

+0

Спасибо, Брайан, я думаю, это поможет мне. Я проверяю источник thbe, а имя выпадающего списка - ddAccounts, как и ожидалось. Итак, мне нужно добавить свойство, названное ddAccounts (??) к моей существующей модели, но какой тип это должно быть? – Craig

+0

Строка будет делать. – CRice

+0

Спасибо, ребята! Это сработало. Не знаю, как ... Это правило, что если есть элемент управления, который отправляет значение, он будет присвоить его тому же именованному свойству модели, как строку? – Craig

Смежные вопросы