ASP.NET MVC3 Html.DropDownListFor () - PullRequest
       4

ASP.NET MVC3 Html.DropDownListFor ()

2 голосов
/ 10 августа 2011

Я пытаюсь создать простую страницу отчетов со статическим количеством раскрывающихся списков, содержащих названия доступных отчетов, и добавить их в коллекцию отчетов для создания отчета сравнения.

Вот моя ViewModel

public class DealSummaryComparisonViewModel
{
    public ICollection<DealSummary> AvailableDealSummaries { get; set; }
    public ICollection<int> SelectedDealSummaries { get; set; }
}

и вот мой взгляд

@model FRSDashboard.Web.Models.DealSummaryComparisonViewModel

@{
     ViewBag.Title = "FRS Dashboard :: Deal Summary Comparison Report";
     var dealSummaryList = new SelectList(Model.AvailableDealSummaries, 
                                          "DealSummaryId", "FileName");
}

<h2>Deal Summary Comparison Report</h2>

<p>Please select at least two files to compare:</p>

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) {
     for (int i = 0; i <= 4; i++) {
         <div>File @i+1: @Html.DropDownListFor(m => m.SelectedDealSummaries,
                                               dealSummaryList)</div>
     }

<div><input type="submit" name="download" id="download" value="Download To Excel" /></div>
}

Это работает для заполнения выпадающих списков, но я не уверен, как заполнить коллекцию SelectedDealSummaries или удалить выбранную сводку сделки из списка (аналогично тому, что я сделал бы с WebForms).

Кроме того, как бы мне добавить элемент в список, например «Выбрать описание сделки ...»?

UPDATE:

Я изменил свой код для использования индексации и вызова функции javascript ... но я застрял на том, что делать в javascript.

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) {
    for (int i = 0; i <= 4; i++) {
        <div>
            File @(i + 1): 
            @Html.DropDownListFor(m => m.SelectedDealSummaries[i], dealSummaryList, 
                new {onchange = "updateAvailable()"})
        </div>
     }
}

<script type="text/javascript">

     function updateAvailable() {
          alert("updating");
     }

</script>

1 Ответ

1 голос
/ 11 августа 2011

Вам нужно использовать индексы для вашей коллекции -> m => m.SelectedDealSummaries [i]

@using (Html.BeginForm("DealSummaryComparison", "Reporting", FormMethod.Post)) {
     for (int i = 0; i <= 4; i++) {
         <div>File @i+1: @Html.DropDownListFor(m => m.SelectedDealSummaries[i],
                                               dealSummaryList)</div>
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...