Asp.net mvc dropdownlist未选择值ASP.NET MVC 4

Asp.net mvc dropdownlist未选择值ASP.NET MVC 4,asp.net-mvc,html.dropdownlistfor,Asp.net Mvc,Html.dropdownlistfor,我知道这个问题在这里已经被问过了,但我无法从这篇文章中分辨出我的错误: 我使用的ViewBag名称与来自链接的模型属性的名称不同 以下是我在控制器中的代码: public ActionResult Create() { ViewBag.Companies = db.Companies.ToList(); return View(); } 这是我在视图中的代码: <div class="editor-field"> @H

我知道这个问题在这里已经被问过了,但我无法从这篇文章中分辨出我的错误:

我使用的ViewBag名称与来自链接的模型属性的名称不同

以下是我在控制器中的代码:

public ActionResult Create()
    {
        ViewBag.Companies = db.Companies.ToList();
        return View();
    }
这是我在视图中的代码:

<div class="editor-field">
        @Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName"), "Select a Category")
        @Html.ValidationMessageFor(model => model.ParentId)
    </div>
我不知道错误在哪里,我对ASP.NET MVC完全陌生

以下是错误日志:


你的意思是在发布后返回视图时?如果是这样,则在保存表单中新创建的数据时,需要在返回ViewBag.Companys之前重新分配ViewBag.Companys。你说需要重新分配是什么意思?很抱歉提出了noobish问题。您的编辑显示您重新分配了ViewBag属性,这样就可以了,尽管您应该在返回Viewcompany之前将其移动到行中;-如果重定向,那么这样做没有意义,因此会产生不必要的额外开销。您能否发布错误的完整详细信息。该错误表示SelectList构造函数IEnumerable items的第一个参数为null,这意味着返回视图时ViewBag.Companys为null。您确定您的代码与发布的代码完全一致吗?在控制器和视图中放置一个断点,然后检查ViewBag.companys
 [HttpPost]
    public ActionResult Create(Company company)
    {
        ViewBag.Companies = db.Companies.ToList();
        if (ModelState.IsValid)
        {
            db.Companies.AddObject(company);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        return View(company);
    }