2015-11-12 4 views
0

Не уверен, что выпадающее я создала отправку выбранного значения. Мне не хватает аргумента из помощника DropDownList?Словарь параметров содержит нулевую запись для параметра «SolutionArchitectID» типа, отличного от нуля, «System.Int32»

CreateDropDowns метод

List<SelectListItem> EmployeeList = new List<SelectListItem>(); 

     foreach (Employee e in db.Employees) 
     { 
      EmployeeList.Add(new SelectListItem { Text = e.FirstName + " " + e.LastName, Value = e.SolutionArchitectID.ToString() }); 
     } 

ViewBag.EmployeeList = EmployeeList; 

UpdateDetails метод

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult UpdateDetails(int SolutionArchitectID) { 

Asset currAppRecord = db.Assets.Where(a => a.ApplicationID == ApplicationID).Single(); 
... 
currAppRecord.SolutionArchitectID = SolutionArchitectID; 
... 
} 

Посмотреть

@using (Html.BeginForm("UpdateDetails", "Atlas")) 
{ 
... 
     <div class="form-group"> 
      <label class="control-label col-md-2" for="Employees">Solution Architect</label> 
      <div class="col-md-10"> 
       @Html.DropDownList("EmployeeList") 
      </div> 
     </div> 
... 
} 

SolutionArc hitectID - это поле для обновления в таблице db на submit.

+0

Я думаю, проблема связана с вашим параметром метода действий, который принимает пустую/пустую строку. Попробуйте отправить некоторое целочисленное значение для этого параметра в url и повторите попытку. Или вы можете указать тип параметра как 'string' и проанализировать его внутри контроллера для обработки. –

+0

Если я удаляю аргумент SolutionArchitectID из метода обновления в контроллере, обновление формы проходит через штраф, вот почему я думаю, что я должен использовать неправильную перегрузку для помощника DropDownList. – SoloSheff

+0

Думаю, вам нужно разместить некоторый пример кода, показывающий поток, который вы делаете из представления в контроллер (например: с сигнатурой метода действия и правильной разметкой, которую вы используете и т. Д.). –

ответ

0

В вашем using нет элемента управления Html с именем SolutionArchitectID. Чтобы ваша форма была успешно отправлена, вам необходимо передать SolutionArchitectID. Как показано ниже в коде.

@using (Html.BeginForm("UpdateDetails", "Atlas")) 
{ 
... 
     <div class="form-group"> 
      <label class="control-label col-md-2" for="Employees">Solution Architect</label> 
      <div class="col-md-10"> 
       @Html.DropDownList("EmployeeList") 
       @Html.Hidden("SolutionArchitectID", <<PutHereSomeValue>>) 
      </div> 
     </div> 
... 
} 

Я думаю, что ответы на вопросы, приведенные ниже помогут более

  • Как вы получите значение для SolutionArchitectID?
  • Будет ли он отправлен обратно с формой или нет?
+0

SolutionArchitectID - это поле для обновления в таблице db на submit. Добавлен в исходное сообщение для ясности. – SoloSheff

+0

Пожалуйста, разместите свой тег формы вместе с методом контроллера, чтобы помочь вам лучше. – ndd

+0

Отредактировано. Включена форма в представлении и метод обновления, который вызывается при отправке формы – SoloSheff