,c#,asp.net-mvc"/>

首页 > 解决方案 > 我收到此错误“没有 '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>

标签: c#asp.net-mvc

解决方案


非常感谢@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();
                }

推荐阅读