我目前正致力于制作一种植物维基。我们开始做的第一件事是网站中用户的管理。为此我们制作了这个视图,显示了从数据库中搜索的结果。搜索工作正常,ViewData [" datos"]返回它应该的内容,在此表中我们显示用户(来自Model Usuario)。最后,对于每个用户,它应该显示一个按钮,将该用户的Model发送给另一个Controller。问题是Controller收到一个空模型。 这是View的代码。具有值Editar的输入是应该发送模型的输入。
@model AtlasPlantasMedicinales.Models.Usuario
@{
ViewBag.Title = "Tabla";
}
@if (ViewData["datos"]!=null){
<table>
@foreach (var elemento in (List<AtlasPlantasMedicinales.Models.Usuario>)(ViewData["datos"]))
{
<tr>
<td>
@elemento.Nombre
</td>
<td>
@elemento.Carrera
</td>
<td>
@elemento.Institucion
</td>
<td>
@elemento.usuario
</td>
<td>
@elemento.correo
</td>
@using (Html.BeginForm("FormularioEditar", "Usuario", FormMethod.Post))
{
<td>@Html.HiddenFor(m => elemento) <input type="submit" value="Editar"></td>
}
</tr>
}
</table>
}
我们如何将元素中的模型发送到控制器?
我们还尝试为模型中的每个属性创建一个Html.HiddenFor,但它仍然无法正常工作。 请记住,我(和我的团队成员)在ASP.NET MVC 4中是全新的
答案 0 :(得分:1)
这是一个模型绑定问题。如果您愿意使用默认模型绑定器,请使用 for 循环而不是 foreach 。您的代码将如下所示(因为您没有发布Model / ViewModel,我将使用ModelId作为属性,并使用usuario作为值):
@for (int i = 0; i < (List<AtlasPlantasMedicinales.Models.Usuario>)(ViewData["datos"])).Count(); i++)
{
var elemento = (List<AtlasPlantasMedicinales.Models.Usuario>)(ViewData["datos"])).ElementAt(i);
<tr>
<td>
@elemento.Nombre
</td>
<td>
@elemento.Carrera
</td>
<td>
@elemento.Institucion
</td>
<td>
@elemento.usuario
</td>
<td>
@elemento.correo
</td>
@using (Html.BeginForm("FormularioEditar", "Usuario", FormMethod.Post))
{
<td>@Html.HiddenFor(m => m.ModelId, new { @Value = elemento.usuario }) <input type="submit" value="Editar"></td>
}
</tr>
}
现在,在控制器中,您将收到 Usuario 模型,只初始化了ModelId属性。 有关模型绑定的更多信息,我建议您阅读Scott Hanslman的这个blog post