0

I'm, имеющие проблемы при создании DropDownListFor, используя связь между к таблицам, которые связаны с кодом объекта первым:Создания DropDownListFor Использования Для таблиц

public class Motivo_Agenda 
{ 
    [Key] 
    [Required]  
    public string DESC_MOTIVO { get; set; } 
} 

public class Agenda // Agenda da produção 
{ 
    [Key] 
    public int ID_AGD { get; set; } 
    [Required]  
    public DateTime DATA_AGD { get; set; }  
    [Display(Name = "De")] 
    public TimeSpan DE { get; set; } 
    [Required] 
    [Display(Name = "Até")] 
    public TimeSpan ATE { get; set; } 
    [Required]  
    public virtual Motivo_Agenda MOTIVO_AGENDA { get; set; } 
} 

I'm tryng, чтобы создать список выпадающего на добавить новый элемент в таблице повестки дня это мой контроллер:

bAxaltaModel dbAxalta = new dbAxaltaModel(); 
    // GET: Agenda 
    public ActionResult Edit() 
    { 
     ViewBag.MOTIVO_AGENDA = new SelectList(dbAxalta.Motivos_Agenda, "DESC_MOTIVO", "DESC_MOTIVO"); 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Edit([Bind(Include = "DE,ATE,DATA_AGD,FLAG_SAB_DOM,MOTIVO_AGENDA")]Agenda Agendas) 
    { 

     var errors = ModelState.Values.SelectMany(v => v.Errors).ToList(); 
     if (ModelState.IsValid != false) 
     {     
      dbAxalta.Agendas.Add(Agendas); 
      dbAxalta.SaveChanges(); 
      var query = dbAxalta.Agendas.Where(m => m.DATA_AGD == Agendas.DATA_AGD); 
      TempData["Agendas"] = query.ToList(); 
      return View(); 
     } 
     ViewBag.MOTIVO_AGENDA = new SelectList(dbAxalta.Motivos_Agenda, "DESC_MOTIVO", "DESC_MOTIVO", Agendas.MOTIVO_AGENDA); 
     return View(); 
    } 

И мой DropDown это:

@Html.DropDownListFor(m => m.MOTIVO_AGENDA, ViewBag.MOTIVO_AGENDA as SelectList, htmlAttributes: new { @class = "form-control" }) 

Но я получаю следующее сообщение об ошибке:

The parameter conversion from type 'System.String' to type 'Axalta_Project.Models.Motivo_Agenda' failed because no type converter can convert between these types.

Любые идеи, как я могу их связать?

+0

Почему у есть 'dot' в этом строка 'm => m.MOTIVO_AGENDA.' (после' MOTIVO_AGENDA')? – Sybren

+0

Это была Типо. Но в коде все хорошо. Спасибо, что узнал меня. –

+0

Вы не можете привязать элемент '' возвращает только одно значение). Это должно быть '@ Html.DropDownListFor (m => m.MOTIVO_AGENDA.DESC_MOTIVO, ViewBag.MOTIVO_AGENDA как SelectList, ...)'. И измените имя свойства «ViewBag», чтобы оно не совпало с одним из ваших свойств модели. –

ответ

0

При использовании DropDownListFor первым параметром является выбранное значение, поэтому вам нужно будет добавить его в свою модель.

В идеале использовать класс модели, а не ViewBag в том же формате, следующее:

public class MyModel { 
public int SelectedAgendaId {get; set;} 
public SelectList Agendas {get;set;} 
} 

Затем использовать что-то вроде этого:

@Html.DropDownListFor(m => m.SelectedAgendaId, Model.Agendas, htmlAttributes: new { @class = "form-control" }) 
+0

My View - это тип типа Повестки дня. –

Смежные вопросы