2014-06-09 4 views
0

Я сделал Dropdownlist со значениями из базы данных и прекрасно работает в отдельном представлении. Но когда я пытаюсь показать мое DROPDOWNLIST в частичном он не работает, и я получаю исключение: «Там нет ViewData элемента типа„IEnumerable“, который имеет ключ„Id“»Почему мой Dropdownlist не работает в частичном представлении в MVC?

Вот мой код:

//it's my Model 
namespace TC.Models 
{ 
    public class TypesQuestionBL 
    { 
     public System.Guid Id { get; set; } 
     public string Name { get; set; } 
     public IEnumerable<SelectListItem> Types { get; set; } 
    } 
} 

//it's my Controller 
namespace TC.Controllers 
{ 
    public class DropDownController : Controller 
    { 
     ExaminationsEntities db = new ExaminationsEntities(); 

     public ActionResult Index() 
     { 
      SelectList typelist = new SelectList(db.TypesQuestions.ToList(), "Id", "Name"); 
      ViewData["Types"] = typelist; 
      return View(); 
     } 

     protected override void Dispose(bool disposing) 
     { 
      db.Dispose(); 
      base.Dispose(disposing); 
     } 
    } 
} 

//it's my Partial View 
@model TC.Models.TypesQuestionBL 
@Html.DropDownList("Id", (IEnumerable<SelectListItem>) ViewData["Types"]) 

//it's my View 
@Html.Partial("~/Views/DropDown/Index.cshtml") 

ответ

0

Update

Приглядевшись, он выглядит, как вы пытаетесь сделать ваше частичное представление с помощью представления индекса. Вы пытаетесь повторно отобразить тот же вид, который в настоящее время отображается как частичный вид, что может быть причиной ваших проблем. Строка в вашем представлении должна измениться с @ Html.Partial ("~/Views/DropDown/Index.cshtml") на @ Html.Partial ("~/Views/DropDown/_MyDropDownListPartialViewNameHere.cshtml"). У вас есть отдельное частичное представление, созданное правильно? Не могли бы вы также указать имена файлов?


Вы устанавливаете ViewData["Types"] к SelectList объекта, когда вы должны установить его в качестве IEnumerable<SelectListItem> объекта.

Ваше действие индекс должен выглядеть следующим образом:

public ActionResult Index() 
{ 
    var typelist = db.TypesQuestions.Select(x => new SelectListItem 
    { 
     Text = x.Name, 
     Value = x.Id.ToString() 
    }).ToList(); 
    ViewData["Types"] = typelist; 
    return View(); 
} 
+0

Спасибо за ответ, я попытался это, но у меня есть та же самая проблема. – Illia

+0

Я думаю, что динамическое свойство не может быть привязано к html-помощнику –

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