раскрывающийся список не выбирает значение ASP.NET MVC 4

Я знаю, что этот вопрос уже задавался здесь, в SO, но я не могу отличить свою ошибку от этого сообщения: DropDownListFor Not Selecting Value

Я не использовал имя 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>

в моей форме создания раскрывающийся список создается без ошибок, однако после нажатия кнопки создания появляется сообщение об ошибке «значение не может быть нулевым», даже если я выбрал значение.

Я даже снова добавил ViewBag в действие [POST] Create:

 [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);
    }

Я не знаю, где находится ошибка, я совершенно не знаком с ASP.NET MVC.

Вот журнал ошибок:

введите описание изображения здесь


person Break the Law    schedule 23.02.2015    source источник
comment
Вы имеете в виду, когда вы вернете просмотр после поста? (если это так, вам необходимо переназначить ViewBag.Companies перед возвратом представления)   -  person    schedule 23.02.2015
comment
При сохранении вновь созданных данных из формы. Что значит нужно переназначить? Простите за глупый вопрос.   -  person Break the Law    schedule 23.02.2015
comment
Редактирование показывает, что вы переназначаете свойство ViewBag так, что все в порядке (хотя вы должны переместить его в строку непосредственно перед return View(company); - нет смысла делать это, если вы перенаправляете его ненужные дополнительные накладные расходы). Можете ли вы опубликовать полную информацию об ошибке.   -  person    schedule 23.02.2015
comment
Эта ошибка говорит о том, что первым параметром конструктора SelectList() (IEnumerable items) является null, что означает, что ViewBag.Companies имеет значение null, когда вы возвращаете представление. Вы уверены, что ваш код в точности такой, как вы разместили?   -  person    schedule 23.02.2015
comment
Установите точку останова в контроллере и в представлении и проверьте ViewBag.   -  person Yishai Galatzer    schedule 23.02.2015
comment
Несвязанный: если это новый код, вы должны использовать MVC 5.2.X (предпочтительно 5.2.3)   -  person Yishai Galatzer    schedule 23.02.2015
comment
@StephenMuecke Я обнаружил ошибку: Выберите категорию ‹- это вызывает ошибку. Однако я хочу, чтобы это было значение по умолчанию, если ничего не выбрано.   -  person Break the Law    schedule 23.02.2015
comment
@BreaktheLaw, Это не при чем. Если значение ParentId не соответствует одному из значений параметра (определяется свойством Id Company, тогда будет выбран первый вариант (Выбрать категорию). Трассировка стека ясно показывает, что значение ViewBag.Companies равно null   -  person    schedule 23.02.2015
comment
@StephenMuecke Да, я уверен. Я подробно разместил необходимые коды, чтобы полностью понять мою проблему. Но почему ошибка больше не отображается, когда я удалил Выбрать категорию?   -  person Break the Law    schedule 23.02.2015
comment
Изменение @Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName"), "Select a Category") на @Html.DropDownListFor(model => model.ParentId, new SelectList(ViewBag.Companies, "Id", "ShortName")) не будет иметь никакого значения, если у вас нет других проблем с кодом. Все, что делает третий параметр - это привязка <option value>Please a category</option> к тегу <select>.   -  person    schedule 23.02.2015
comment
Внезапно я вернулся к параметру по умолчанию «Выбрать категорию в моем представлении», и он все еще работает, я выгляжу здесь как идиот, задаваясь вопросом, как это работает. Я не менял код в своем контроллере   -  person Break the Law    schedule 23.02.2015