Asp.Net MVC: вставка данных из коллекции форм со списком значений

Как вы можете видеть на картинке, у меня есть форма, в которой я постоянно добавляю элементы в таблицу ниже.

Когда я нажимаю кнопку «Сохранить все», он отправляет все значения таблицы в метод «InsertBulk». введите здесь описание изображения

And this is what I did in my view. I am created a form within the table. Set name and values for each input field. Made the input fields hidden, displayed only text and then on clicking save all button it posts all those value to the InsertBulk method.

@model FYPPharmAssistant.Models.InventoryModel.Manufacturer

@{
    ViewBag.Title = "Form";
    Layout = "~/Views/Shared/_Layout.cshtml";
}


@using (Html.BeginForm()) 
{ 
    <label>Name</label><br />
    @Html.EditorFor(m => m.ManufacturerName, new { htmlAttributes = new { @class = "form-control" } })  <br />
    <label>Description</label><br />
    @Html.EditorFor(m => m.Description, new { htmlAttributes = new { @class = "form-control" } })
    <input type="submit" id="addmore" value="add" />
}
@using (Html.BeginForm("InsertBulk", "Manufacturer"))
{
    <table id="table">
        <tr>
            <th>
                name &nbsp; &nbsp; 
            </th>
            <th>
                description
            </th>
        </tr>
    </table>
    <input type="submit" id="btnsaveall" value="Save all" />
}

<script>
    $(document).on('ready', function () {
        $('#addmore').on('click', function () {
            var $table = $("#table");            
            $table.append("<tr> <td><input type='hidden' name='ManufacturerName' value='" + $('#ManufacturerName').val() + "' />" + $('#ManufacturerName').val() + "</td> <td><input type='hidden' name='Description' value='" + $('#Description').val() + "'>" + $('#Description').val() + "</td> <td><a href='javascript:void(0)' onclick='removeItem(this)'>Remove</a></td></tr>");

            return false;
        });
      });
  </script>

Это мой метод InsertBulk.

[HttpPost]
        public void InsertBulk(FormCollection coll)
        {
           
                Manufacturer m = new Manufacturer();
                m.ManufacturerName = coll["ManufacturerName"];
                m.Description = coll["Description"];
                db.Manufacturers.Add(m);
                db.SaveChanges();
          
          }

Результат: вот что я получаю в результате. Как мне решить это? Пожалуйста помоги!

введите здесь описание изображения

Я также пытался подсчитать ключи и перебрать каждый из них в методе InsertBulk. Но я думаю, что я сделал все это неправильно.

 int count = coll.Count;
            

              if(count == 0)
              {
                  return View("ChamForm", "Test");
              }
              else
              {
                  for(int i = 0; i<count; i++)
                  {
                      Manufacturer m = new Manufacturer();
                      m.ManufacturerName = coll["ManufacturerName[" + i + "]"];
                      m.Description = coll["Description[" + i + "]"];
                      db.Manufacturers.Add(m);
                      db.SaveChanges();
                  }
              }*


person Avishekh Bharati    schedule 11.09.2015    source источник


Ответы (2)


Если это так, почему бы не разделить содержимое на основе запятой, сохранив каждое из них в двух разных строковых массивах. Затем прокрутите имя и описание каждого элемента массива в каждом цикле.

person Community    schedule 14.09.2015

person    schedule
comment
Ответы, содержащие только код, не приветствуются. Нажмите изменить и добавьте несколько слов, описывающих, как ваш код отвечает на вопрос, или, возможно, объясните, чем ваш ответ отличается от предыдущего. ответ/ответы. Спасибо - person Nick; 26.12.2018