c# - 具有键“HousingId”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable”类型’。”
问题描述
我有一个正在开发的 MVC 应用程序。我有一个运行良好的应用程序创建视图。但我想创建一个局部视图,以便可以在索引中调用它。然而,部分观点抛出
System.InvalidOperationException:“具有键“HousingId”的 ViewData 项的类型为“System.Int32”,但必须为“IEnumerable”类型
在这行代码上:
@Html.DropDownList("HousingId", (IEnumerable<SelectListItem>)ViewBag.Housings, htmlAttributes: new { @class = "form-control" })
然而,这行代码在正常的 Create 视图中运行良好。这是我的控制器:
public ActionResult Create()
{
var housings = new SelectList(_db.Housings.ToList(), "HousingId", "Name");
ViewBag.Housings = housings;
return View();
}
我错过了什么?
编辑:这是我传递部分的方式
@model IEnumerable<Housing_RedBadgeMVC.Models.ApplicationModels.ApplicationListItem>
...
@foreach (var item in Model)
{
<div class="create-housing-container">
<p style="color: white; font-size: 12px;">
Here you can view current applications for specific housing,
if you'd like to fill out an application please click
@Html.Partial("_ApplicationCreate", item)
</p>
</div>
}
...
以及部分内容:
@model Housing_RedBadgeMVC.Models.ApplicationModels.ApplicationListItem
...
@using (Html.BeginForm("Create", "Application", new { id = Model.HousingId }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.HousingId, "Housing", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("HousingId", (IEnumerable<SelectListItem>)ViewBag.Housings, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.HousingId, "", new { @class = "text-danger" })
</div>
</div>
}
...
解决方案
它说 Dropdownlist 必须是 List ,因为您只是传递单个对象,例如var
改变这个:
var housings = new SelectList(_db.Housings.ToList(), "HousingId", "Name");
至
IEnumerable<SelectListItem> housings = new SelectList(_db.Housings.ToList(), "HousingId", "Name");
编辑:
尝试这个:
IEnumerable<SelectListItem> housings = db.Housings.Select(
b => new SelectListItem { Value = b.HousingId, Text = b.Name}).ToString();
ViewBag.Housings = housings;
推荐阅读
- asp.net - HttpContext 错误。txt 文件的文件路径
- cqrs - CQRS 投影,通过探测命令连接来自不同聚合的数据
- php - Symfony - 将内部 FORM 功能分配给此 FORM 的按钮
- ios - 无法获取 Testflight 公共链接。“尚未批准任何版本进行 TestFlight Beta 测试”
- c++ - 模棱两可的重载、隐式转换和显式构造函数
- json - JSON Path - 如何根据子元素查找根元素?
- google-workspace - 有没有办法使用 Google Workspace (G Suite) 帐户访问 Nest 设备?
- javascript - 带按钮的多个复选框
- sql - CASE WHEN 错误 - 根据另一列的条件为列设置值
- android - 我安装了最新版本的 Android Studio。我在同步 gradle 时遇到错误