我是asp.net和mvc的新手,我正在尝试使用表单发送一个int,一个来自不同对象的int列表,以及来自另一个对象的其他int列表。
我对插入int的看法是
@using (Html.BeginForm("Guardar", "pedidoEmp"))
{
@Html.ValidationSummary(true, "Please fix the following errors.")
<center>
<div class="form-group">
@Html.LabelFor(m => m.empleadoId)
@Html.DropDownListFor(m => m.empleadoId, new SelectList(Model.verEmp, "empleadoId", "Nombre"), "", new { @class = "form-control" })
@Html.ValidationMessageFor(m => m.empleadoId)
</div>
</center>
,列表是
@for (var i = 0; i < Model.verMenu.Count; i++)
{
<tr>
<td>
@Html.HiddenFor(menuId => Model.verMenu[i].MenuId)
@Html.DisplayFor(sopa => Model.verMenu[i].Sopa)
</td>
。 。
<div class="form-group">
@for (var o = 0; o < Model.opMenuVer.Count; o++)
{
if (Model.opMenuVer[o].MenuId == Model.verMenu[i].MenuId)
{
@Html.CheckBox("OpcionId", new { value = Model.opMenuVer[o].OpcionId })
@Html.Label(Model.opMenuVer[o].Nombre)
@Html.ValidationMessageFor(m => Model.opMenuVer[o].OpcionId)
}
}
</div>
</td>
</tr>
}
</tbody>
</table>
@Html.AntiForgeryToken()
<button type="submit" class="btn btn-primary">Guardar</button>
}
在我的控制器中,httppost我尝试做这样的事情
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Guardar(int idEmp, List<int> menusId, List<int> opsId)
{
List<PedidoXEmpleados> pedido = new List<PedidoXEmpleados>();
if (!ModelState.IsValid)
{
return View("agregarMenu");
}
for (int i = 0; i < menusId.Count; i++)
{
pedido[i].estadoPedido = true;
pedido[i].EmpleadoId = idEmp;
pedido[i].MenuId = menusId[i];
pedido[i].OpcionId = opsId[i];
_conBd.PedidoXEmpleados.Add(pedido[i]);
}
_conBd.SaveChanges();
return RedirectToAction("Index");
}
非常感谢,我尝试搜索其他部分,但我找不到有用的东西,当我尝试项目时告诉我这个,“参数字典包含参数'idEmp'的非空条目可空类型“。
答案 0 :(得分:0)
我认为最好的方法是创建一个viewModel,其中包含int和2列表的属性。然后使用此viewModel作为视图的模型,并将值传递给控制器中的模型。这个类不应该有Id属性或DbSet。
答案 1 :(得分:0)
首先,您的参数名称应与您的属性名称相匹配,并对代码进行这些更改
@Html.DropDownList("idEmp", new SelectList(Model.verEmp, "empleadoId", "Nombre"), "", new { @class = "form-control" })
@Html.CheckBox("opsId", new { value = Model.opMenuVer[o].OpcionId })
@Html.Hidden("menusId",Model.verMenu[i].MenuId)