Передача значений из нескольких текстовых полей в контроллер
Привет
В моей форме mvc у меня есть много флажков и текстовых полей, которые генерируются динамично. Он идеально подходит для флажков, которые он пропускает только для тех, которые выбраны. Но для текстовых полей он передает все значения. Когда я отлаживаю в своей консоли, я вижу Array [45,55], я имею в виду, что он получает только заполненные текстовые поля, но в контроллере передает все значения, даже те, которые имеют 0. Есть идеи? спасибо
Что я уже пробовал:
мой взгляд
@foreach (var item in Model.SubCategory.Where(x => x.CategoryID == "05")) { <div class="row"> <div class="col-sm-6"> <div class="form-group"> <input class="col-sm-1" type="checkbox" id="@item.SubCategoryID" name="Subcategory" value="@item.SubCategoryID" /> <label class="col-sm-10" for="optionId">@item.SubCategoryDescription</label> </div> </div> <div class="form-group"> @Html.LabelFor(model => model.Details.Ammount, htmlAttributes: new { @class = "control-label col-md-2" }) <div class="col-md-2"> @Html.TextBoxFor(model => model.Details.Ammount, new { @class = "ammount", Name = "ammount" } ) @Html.ValidationMessageFor(model => model.Details.Ammount, "", new { @class = "text-danger" }) </div> </div> </div>
Мой скрипт
<script type="text/javascript"> $(document).ready(function () { $('#postBtn').on('click', function (e) { var ammounts = []; $('input[name="Subcategory"]').each(function () { if ($(this).is(':checked') === true) { var amountField = $(this).parent().parent().next().find("input[name='ammount']"); if ($(amountField).val() !== '') { if (parseInt($(amountField).val()) > 0) { ammounts.push(parseInt($(amountField).val())); } } } }); console.log(ammounts); $.ajax({ url: '@Url.Action("Create", "Budgets")', type: "POST", data: JSON.stringify({ Subcategory: [], ammount: ammounts }), dataType: "json", traditional: true, success: function () { alert("ajax request to server succeed"); }, }); }); }); </script>
Мой контроллер
public JsonResult Create(IEnumerable<int> Subcategory, IEnumerable<decimal> ammount)