c# - 我收到此错误“没有 'IEnumerable 类型的 ViewData 项' 具有键 'Branch_Name"
问题描述
我收到此错误“没有具有键“Branch_Name”的“IEnumerable”类型的 ViewData 项目,我正在努力解决它。这是我的模型
public int Id { get; set; }
[DisplayName("Unit Name")]
[Required]
[StringLength(150, MinimumLength = 3)]
public string Unit_Name { get; set; }
[DisplayName("Prefix")]
[Required]
[StringLength(6, MinimumLength = 1)]
public string Prefix { get; set; }
[DisplayName("Branch Name")]
public string Branch_Name { get; set; }
[DisplayName("Status")]
public string Status { get; set; }
public virtual Tourism_Branch Tourism_Branch { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Order> Orders { get; set; }
这是我的控制器
public ActionResult Create([Bind(Include = "Id,Unit_Name,Prefix,Branch_Name,Status")] Budgeted_Unit budgeted_Unit)
{
if (ModelState.IsValid)
{
if (db.Budgeted_Unit.Count(e => e.Unit_Name == budgeted_Unit.Unit_Name) == 0)
{
db.Budgeted_Unit.Add(budgeted_Unit);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
ViewBag.Message = budgeted_Unit.Unit_Name + " already exists!";
return View();
}
}
ViewBag.Branch_Name = new SelectList(db.Tourism_Branch, "Branch_Name", "Branch_Name", budgeted_Unit.Branch_Name);
return View(budgeted_Unit);
}
这是我的观点
<div class="form-group">
@Html.LabelFor(model => model.Branch_Name, "Branch_Name", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("Branch_Name", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Branch_Name, "", new { @class = "text-danger" })
</div>
</div>
解决方案
非常感谢@Jayesh,我找到了解决方案。问题出在 else 语句中:
if (ModelState.IsValid)
{
if (db.Budgeted_Unit.Count(e => e.Unit_Name == budgeted_Unit.Unit_Name) == 0)
{
db.Budgeted_Unit.Add(budgeted_Unit);
db.SaveChanges();
return RedirectToAction("Index");
}
else
{
ViewBag.Message = budgeted_Unit.Unit_Name + " already exists!";
return View();
}
}
我需要做的就是在 else 语句中重新分配 ViewBag.Branch_Name ,如下所示:
else
{
ViewBag.Message = budgeted_Unit.Unit_Name + " already exists!";
ViewBag.Branch_Name = new SelectList(db.Tourism_Branch, "Branch_Name", "Branch_Name");
return View();
}
推荐阅读
- python - 熊猫数据框中的跨列搜索
- r - 如何找到事件/字母/的发生模式?
- php - 无法在 PHP 中获取查询字符串(初学者/简单问题?)
- gradle - 如何编写一个 gradle 构建任务,该任务在与我的 gradle 构建文件不同的目录中运行诸如“npm install”之类的脚本?
- javascript - 在 PHP 中返回没有值
- python - 使用 BeautifulSoup 解析内容
- java - 如何创建一个新文件并放置一些用户定义的整数(使用 Scanner 类)然后读取它?
- pandas - Pandas DataFrame 清理
- c - 为 C/C++ 安装 openSSL MacOs X gcc-9 时遇到问题
- curl - Curl 拒绝访问