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.