Создание DropDownList для использования в таблицах

У меня проблема с созданием 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; }
}

Я пытаюсь создать выпадающий список, чтобы добавить новый элемент в таблицу повестки дня, это мой контроллер:

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" })

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

Не удалось преобразовать параметр из типа "System.String" в тип "Axalta_Project.Models.Motivo_Agenda", поскольку преобразователь типов не может преобразовать эти типы.

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

1 ответ

Решение

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

В идеале используйте класс Model, а не 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" })
Другие вопросы по тегам