提问人:Sinan 提问时间:11/15/2022 最后编辑:Sinan 更新时间:11/15/2022 访问量:476
传递给 ViewDataDictionary 的模型项是类型,但此 ViewDataDictionary 实例需要类型为“System.Collections”的模型项
The model item passed into the ViewDataDictionary is of type but this ViewDataDictionary instance requires a model item of type 'System.Collections
问:
当我想在 Asp.net.Mvc 中发布我的表单时,我遇到了这个问题:我该如何解决这个问题
InvalidOperationException:传递给 ViewDataDictionary 的模型项的类型为“FormValidation.Models.Entity.Personel”,但此 ViewDataDictionary 实例需要类型为“System.Collections.Generic.IEnumerable”1[FormValidation.Models.Entity.Personel]“的模型项。
控制器
[HttpGet]
public IActionResult Index()
{
return View();
}
[HttpPost]
public IActionResult Post(Personel personel)
{
return View(personel);
}
表单索引
@model FormValidation.Models.Entity.Personel
<form method="post" asp-action="Post" asp-controller="Home">
<div class="container">
<div class="row">
<div class="form-group">
<label for="Name" class="form-control" placeholder="Enter Your Name">Name</label>
<input type="text" class="form-control" asp-for="Name" />
</div>
<br />
<div class="form-group">
<label for="Surname" class="form-control" placeholder="Enter Your Surname">Surname</label>
<input type="text" class="form-control" placeholder="Enter Your surname" asp-for="Surname" />
</div>
<br />
<br />
<div class="form-group">
<label for="City">City select</label>
<select class="form-control" asp-for="City">
<option></option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
</select>
</div>
<br />
<br />
<br />
<div class="form-group">
<label for="Age" class="form-control" placeholder="Enter Your Age">Age</label>
<input type="number" class="form-control" placeholder="Enter Your Age" asp-for="Age" />
</div>
<br />
<div class="form-group">
<label for="Adress">Adres</label>
<textarea class="form-control" rows="3" asp-for="Adress">Adres</textarea>
</div>
</div>
</div>
<br />
<input type="submit" name="submit" value="submit" class="btn btn-primary" />
</form>
帖子索引
@model IEnumerable<FormValidation.Models.Entity.Personel>
@foreach (var item in Model)
{
<p>@item.Name</p>
<p>@item.Surname</p>
<p>@item.Age</p>
<p>@item.City</p>
}
答:
0赞
Ruikai Feng
11/15/2022
#1
正如错误所示,您传递了单个人员模型来呈现视图return View(personel);
但是,视图需要IEnumerable<Personel>
如果你只想显示你刚刚创建的模型的细节,修改你的视图:
@model FormValidation.Models.Entity.Personel
.......
<p>@Model.Name</p>
<p>@Model.Surname</p>
<p>@Model.Age</p>
<p>@Model.City</p>
评论
0赞
Sinan
11/15/2022
感谢您的回答,它有效,但我想知道为什么 foreach 循环不起作用
0赞
Ruikai Feng
11/15/2022
因为你刚刚将单个人模型传递给了 ViewDataDictionary,如果你想将代码保留在你的视图中,你必须传递 IEnumerable<Personel> 或 List<Personel 的参数类型>例如:var personellist=new List<Personel>(){...... } , return View(personellist)
0赞
Sinan
11/15/2022
谢谢你的回答,你回答了我所有的问题
评论