我在视图中编写了CREATE Operation的代码,它将使用带有for循环的form-tag在数据库中插入多个行。当点击“创建”按钮时,它将只保存一行,所以当我点击按钮时,我想要那个行。应该创建一行。
这里是View ..
的代码@model CarParking.Models.Area
@for (int i = 1; i <= Model.NoOfParkingPlaces; i++)
{
using (Html.BeginForm("Create", "ParkingPlace", FormMethod.Post))
{
<label>AreaID:</label>
<input id="AreaID" name="AreaID" type="text" value="@Model.AreaID" />
<label for="Parking_IDs">Parking IDs</label>
<input type="text" value="P.Id: @i" name="PlaceId" />
<input type="submit" value="Create" />
}
}
这里是Controller的代码......
public ActionResult Create(string areaName)
{
Area area = db.Areas.SingleOrDefault(x => x.ParkingPlaceName == areaName);
return View(area);
}
[HttpPost]
public ActionResult Create([Bind(Include = "ParkID,PlaceId,CarID,AreaID")] ParkingPlace parkingPlace)
{
if (ModelState.IsValid)
{
db.ParkingPlaces.Add(parkingPlace);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(parkingPlace);
}
这里有一些图片我的视图看起来enter image description here
答案 0 :(得分:0)
您是说要立即在网页上发布所有表单吗?
如果是这样 - 它不能像那样工作......一种选择是使用javascript将AJAX全部发布,但正确的方法是使用一个表单,其中包含每个ParkingPlaces。
@for( int i = 0; i < Model.NoOfParkingPlaces; ++i)
{
@Html.EditorFor(m => m.ParkingPlaces[i].AreaId)
@Html.EditorFor(m => m.ParkingPlaces[i].Id)
... etc
}
并且您的操作参数变为;
public ActionResult Create(IEnumerable<ParkingPlace> ParkingPlaces)
{