Как вы можете видеть на картинке, у меня есть форма, в которой я постоянно добавляю элементы в таблицу ниже.
Когда я нажимаю кнопку «Сохранить все», он отправляет все значения таблицы в метод «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
</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();
}
}*