Требование для моего приложения MVC заключается в том, чтобы хранить банковскую транзакцию.Переменный размер на Modal
Объект транзакции содержит строки транзакций.
Объект транзакции может иметь одну или несколько линий транзакций. Значения в строках транзакций суммируются и становятся общей суммой транзакции.
Когда пользователь создает новую транзакцию, отображается одна строка транзакции с кнопкой Добавить. Если они нажимают «добавить», появляется новая строка транзакции с другой кнопкой «Добавить». Таким образом, они могут добавить столько строк, сколько захотят.
Модель, которую я отправляю в представление, имеет свойство List Lines и имеет одну строку, добавленную по умолчанию.
Я собирался просто добавить 10 строк (не было бы более 10 .. 99% времени, есть только один), а затем просто скрытые линии на виду. Но это кажется грязным. Есть ли способ справиться с этим - клиентская сторона, добавив элементы в мой список <> когда нажата кнопка «Добавить»?
Текущий хитроумный код:
<div class="form-group">
<label for="cmbCategory0" class="col-lg-1 control-label">Category:</label>
<div class="col-lg-3">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[0].CategoryId,
new SelectList(Model.TransactionReferences.Categories, "Value", "Text", Model.Transaction.TransactionLines[0].CategoryId), "Select one",
new { @onchange = "populateSubCategory(0)", @class = "cmbCategory0 form-control" })
</div>
<div class="col-lg-3">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[0].SubCategoryId,
new SelectList(Model.TransactionReferences.SubCategories, "Value", "Text", Model.Transaction.TransactionLines[0].SubCategoryId), "Select one",
new { @class = "cmbSubCategory0 form-control" })
</div>
<div class="col-lg-2">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[0].CostCentreId,
new SelectList(Model.TransactionReferences.CostCentres, "Value", "Text", Model.Transaction.TransactionLines[0].CostCentreId), "None",
new { @class = "cmbCostCentre0 form-control" })
</div>
<label for="txtAmount0" class="col-lg-1 control-label">Amount:</label>
<div class="col-lg-1">
@Html.TextBoxFor(x => x.Transaction.TransactionLines[0].Amount, new { @class = "txtAmount form-control input-money", @placeholder = "Amount", @type = "number", @min = 0, @step = "any" })
</div>
<div class="col-lg-1">
<a class="btn btn-info btnadd0" onclick="showSplit(0)">Add</a>
</div>
</div>
<div class="form-group row1 hide">
<label for="cmbCategory1" class="col-lg-1 control-label">Category:</label>
<div class="col-lg-3">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[1].CategoryId,
new SelectList(Model.TransactionReferences.Categories, "Value", "Text", Model.Transaction.TransactionLines[1].CategoryId), "Select one",
new { @onchange = "populateSubCategory(1)", @class = "cmbCategory1 form-control" })
</div>
<div class="col-lg-3">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[1].SubCategoryId,
new SelectList(Model.TransactionReferences.SubCategories, "Value", "Text", Model.Transaction.TransactionLines[1].SubCategoryId), "Select one",
new { @class = "cmbSubCategory1 form-control" })
</div>
<div class="col-lg-2">
@Html.DropDownListFor(x => x.Transaction.TransactionLines[1].CostCentreId,
new SelectList(Model.TransactionReferences.CostCentres, "Value", "Text", Model.Transaction.TransactionLines[1].CostCentreId), "None",
new { @class = "cmbCostCentre1 form-control" })
</div>
<label for="txtAmount" class="col-lg-1 control-label">Amount:</label>
<div class="col-lg-1">
@Html.TextBoxFor(x => x.Transaction.TransactionLines[1].Amount, new { @class = "txtAmount form-control input-money", @placeholder = "Amount", @type = "number", @min = 0, @step = "any" })
</div>
<div class="col-lg-1">
<a class="btn btn-info btnadd1" onclick="showSplit(1)">Add</a>
</div>
</div>
Thanks Erik! Это звучит многообещающе. Я добавляю «изворотливый» способ, которым я это делаю сейчас (см. Код). – Craig