0

У меня есть следующая проблема:Не удается передать ViewBag информацию на DropDownListFor

создать Db контекст, а затем передать его в IQueryable. После этого я извлекаю разные значения. Он отлично отвечает на результаты (я проверил в отладчике). Я создаю viewbag:

public ActionResult Create() 
{ 
    var forDistinct = db.Cases.AsQueryable(); 
    var Issue_Type = forDistinct.DistinctBy(x => x.Issue_Type).Select(col => col.Issue_Type).ToList(); 
    ViewBag.DropDown = new SelectList(Issue_Type); 
    return View(); 
} 

Я установил DropDownListFor следующим образом:

@Html.DropDownListFor(model => model.Issue_Type, ViewBag.DropDown as IEnumerable<SelectListItem>) 

При попытке сохранить новый элемент, появляется следующее сообщение об ошибке:

The ViewData item that has the key 'Issue_Type' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem> 

Что делать?

ответ

1

Использование Post Метод как это:

[HttpPost] 
public ActionResult Create() 
{ 
var forDistinct = db.Cases.AsQueryable(); 
var Issue_Type = forDistinct.DistinctBy(x => x.Issue_Type).Select(col => 
col.Issue_Type)/*.Select(grp => grp.First()*/.ToList(); 
ViewBag.DropDown = new SelectList(Issue_Type); 
return View(); 
} 
0

Проблема решена: объявите ViewBags как в методах получения, так и публикации!

0

Ошибка очевидна DropDown должна быть как:

ViewBag.DropDown = forDistinct.DistinctBy(x => x.Issue_Type).Select(col=> new SelectListItems { Text= col.Issue_Type,Value=col.Issue_Type.ToString() }).ToList(); 

, потому что ваш выпадающий ожидая IEnumerable