У меня есть контроллер с ActionResult, который получает три массива из представления в HttpPost. Массивами являются Id (tableId) позиция сверху (positionY) и позиция слева (positionX). Когда вы нажимаете save, ActionResult необходимо обновить все позиции из соответствующих идентификаторов в базе данных.Linq query foreach element в массиве
Это мой контроллер:
private BonTempsDbContext db = new BonTempsDbContext();
[HttpPost]
public ActionResult Index(int[] tableId, int[] tablePosX, int[] tablePosY)
{
int i = 0;
foreach (var id in tableId)
{
int number = tableId[i];
Tafel tafel = db.Tafel
.Where(x => x.id == number)
.ToList();
db.Entry(tafel).State = EntityState.Modified;
i++;
}
return View(db.Tafel.ToList());
}
Я получаю ошибку:
Cannot implicitly convert type 'System.Collections.Generic.List' to 'BonTempsMVC.Tafel'
Это мой взгляд, если вы ван получить что-то полезным из него.
@model IEnumerable<BonTempsMVC.Tafel>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Index</h2>
<div class="VoegToeBtn">
<a href="/tafel/create">
<span class="btn btn-default">
<span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Maak nieuw menu aan
</span>
</a>
</div>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div id="tablewrapper">
@foreach (var item in Model)
{
var positionXId = "posX" + item.id;
var positionYId = "posY" + item.id;
<div class="draggable ui-widget-content" id="@Html.DisplayFor(ModelItem => item.id)">
<input type="text" hidden name="tableId" value="@Html.DisplayFor(ModelItem => item.id)" />
<input type="text" hidden name="tablePosX" id="@positionXId" value="" />
<input type="text" hidden name="tablePosY" id="@positionXId" value="" />
<p>@Html.DisplayFor(ModelItem => item.tafelNaam)</p>
</div>
}
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
}
<script>
$(".draggable").draggable({
snap: ".draggable",
snapMode: "outer",
stop: function (event, ui) {
var finalOffset = $(this).offset();
var finalxPos = finalOffset.left;
var finalyPos = finalOffset.top;
var itemId = $(this).attr('id');
var posXid = "posX" + itemId;
var posYid = "posY" + itemId;
$('input:text[id="' + posXid + '"]').attr("value", finalxPos);
$('input:text[id="' + posYid + '"]').attr("value", finalyPos);
},
});
</script>
И Tafel модель:
namespace BonTempsMVC
{
public class Tafel
{
public int id { get; set; }
public string tafelNaam { get; set; }
public bool beschikbaar { get; set; }
public float positionY { get; set; }
public float positionX { get; set; }
}
}
Можете ли вы опубликовать свое определение объекта Tafel? – edita
Я отредактировал мой вопрос с моей моделью tafel. –