Ustawianie wartości w wielu DropDownList korzystających z tej samej kolekcji SelectListItem

0

Jest taka sprawa:

    public class MainImportViewModel
    {
        public MainImportViewModel()
        {
            Import = new ImportTransactionViewModel();
            TransactionImports = new List<ImportTransactionViewModel>();
        }

        public Member MemberOwner { get; set; }
        public ImportTransactionViewModel Import { get; set; }


        public List<ImportTransactionViewModel> TransactionImports { get; set; }

        public int MainMemberId { get; set; }
        public List<SelectListItem> Members { get; set; }
        public List<SelectListItem> Categories { get; set; }
        public List<SelectListItem> Subcategories { get; set; }
    }
    public class ImportTransactionViewModel
    {
        public string Date { get; set; }

        public string Description { get; set; }

        public decimal Payment { get; set; }

        public decimal Deposit { get; set; }

        public string Account { get; set; }

        public string SubcategoryId { get; set; }

        public string CategoryId { get; set; }

        public string MemberId { get; set; }
    }
       <table class="table">
            <tr>
                <th>
                    @Html.DisplayNameFor(m => m.Import.Date)
                </th>
                <th>
                    @Html.DisplayNameFor(m => m.Import.Description)
                </th>
                <th>
                    @Html.DisplayNameFor(m => m.Import.Payment)
                </th>
                <th>
                    @Html.DisplayNameFor(m => m.Import.Deposit)
                </th>
                <th>
                    @Html.DisplayNameFor(m => m.Import.Account)
                </th>
            </tr>
            @for (var i = 0; i < Model.TransactionImports.Count();i++ )
            {
                <tr>
                    <td>
                        @Html.DisplayFor(m => m.TransactionImports[i].Date)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.TransactionImports[i].Description)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.TransactionImports[i].Payment)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.TransactionImports[i].Deposit)
                    </td>
                    <td>
                        @Html.DisplayFor(m => m.TransactionImports[i].Account)
                        @Html.HiddenFor(m => m.TransactionImports[i].Account)
                    </td>
                </tr>
                <tr>
                    <td style="border-top: none" colspan="5">
                        <div class="row">
                            <div class="col-md-4">
                                <div class="row">
                                    <div class="col-md-4">@Html.Label("Użytkownik:")</div>
                                    <div class="col-md-8">
                                        @Html.DropDownListFor(m => m.TransactionImports[i].MemberId, Model.Members, new { @class = "form-control DDChildMember" })
                                    </div>
                                </div>
                            </div>
                            <div class="col-md-4">
                                <div class="row">
                                    <div class="col-md-4">@Html.Label("Kategoria:")</div>
                                    <div class="col-md-8">@Html.DropDownListFor(m => m.TransactionImports[i].CategoryId, Model.Categories, new { @class = "form-control DDCategory" })</div>
                                </div>
                            </div>
                            <div class="col-md-4">
                                <div class="row">
                                    <div class="col-md-4">@Html.Label("Podkategoria:")</div>
                                    <div class="col-md-8">
                                        @Html.DropDownListFor(m => m.TransactionImports[i].SubcategoryId, Model.Subcategories, new { @class = "form-control DDSubcategory" })
                                    </div>
                                </div>
                            </div>
                        </div>
                    </td>
                </tr>
            }
        </table>

Przesyłam do widoku główny ViewModel MainImportViewModel który zawiera kolekcję ImportTransactionViewModel W tej kolekcji każdy item zawiera defaultową wartość dla swojego DropDownList, ale każdy DDL korzysta z tej samej kolekcji SelectListItem. Jak teraz zrobić aby DDL ustawiał sobie tą defaultową wartość?
Mógłbym w każdym ImportTransactionViewModel wysłać nową kolekcjię SelectListItem z ustawioną gdzieś Selected=true ale to raczej nie jest w porządku.

0

Dobra, okazuje się że jest jakiś bug i DropDownListFor nie binduje tego jeśli jest w pętli for. Trzeba użyć EditorTemplate.

1 użytkowników online, w tym zalogowanych: 0, gości: 1