2014-02-08 2 views
0

Требование для моего приложения 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> 

ответ

0

Конечно.

Вы создаете PartialView для строк, а в вашем контроллере у вас есть метод, который возвращает это как результат PartialView. По вашему мнению, вы используете помощник @ Ajax.Action() для создания ссылки при указании имени действия в контроллере, который возвращает частичный вид.

Без фрагментов вашего фактического кода и просмотров, трудно быть более конкретным, но это широкий штрих.

+0

Thanks Erik! Это звучит многообещающе. Я добавляю «изворотливый» способ, которым я это делаю сейчас (см. Код). – Craig

Смежные вопросы