ASP.Net MVC возвращает значение DropDown - PullRequest
0 голосов
/ 17 января 2011

Я учусь, и мне удалось сделать красивую страницу отображения информации, отображающую списки транзакций. Тем не менее, у меня нет добавленного поля 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, чтобы выполнить фильтрацию.

1 Ответ

2 голосов
/ 17 января 2011

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

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...