我有一个带有ActionResult的Controller,它从HttpPost的视图中获取三个数组。 数组是Id(tableId)从顶部开始的位置(positionY)和从左边开始的位置(positionX)。 单击“保存”时,ActionResult需要更新数据库中相应ID的所有位置。
这是我的控制器:
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());
}
我收到错误:
无法隐式转换类型 'System.Collections.Generic.List'到 '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; }
}
}
答案 0 :(得分:3)
试试这个: -
List<Tafel> tafel = db.Tafel
.Where(x => x.id == number)
.ToList();
此处返回List<Tafel>
,但您将其存储在Tafel
对象中。
如果您非常确定在Tafel
实体中只有一个匹配id
的项目,请执行以下操作: -
Tafel tafel = db.Tafel.FirstOrDefault(x => x.id == number);
正如@DavidG建议你也可以这样做: -
Tafel tafel = db.Tafel.Find(number);