Я пытаюсь сделать мой код более удобочитаемым. Это проект MVC Я использую жесткопотребительский список выбора из другого класса mvc
ViewBag.Origin = new List<SelectListItem>
{
new SelectListItem { Text = "Born", Value = "Born"},
new SelectListItem { Text = "Donated", Value = "Donated"},
new SelectListItem { Text = "Bought", Value = "Bought"}
};
много времени в приложении, так что я решил, чтобы переместить его в хранилище класса.
public class Repository
{
public List<SelectListItem> GetOriginList()
{
List<SelectListItem> originItems = new List<SelectListItem>
{
new SelectListItem { Text = "Born", Value = "Born"},
new SelectListItem { Text = "Donated", Value = "Donated"},
new SelectListItem { Text = "Bought", Value = "Bought"}
};
return originItems;
}
Тогда попытался получить к нему доступ.
public class CowController : Controller
{
Repository repository = new Repository();
ActionResult Create() {
ViewBag.origin = repository.GetOriginList();
return View();
}
}
Мой Посмотреть
@ Html.DropDownList ("Происхождение", "Выбор происхождения")
Но смотреть я побегу ошибку времени.
An exception of type 'System.InvalidOperationException' occurred in System.Web.Mvc.dll but was not handled in user code
Additional information: The ViewData item that has the key 'Origin' is of type 'System.Collections.Generic.List`1[[System.Web.WebPages.Html.SelectListItem, System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]' but must be of type 'IEnumerable<SelectListItem>'.
Работает нормально, когда жестко закодировано только на действии. Я забываю конвертировать любого типа?
Единственное отличие, которое я вижу, - это WebPages.Html.SelectListItem, у которого есть дополнительный конструктор, который позволяет вам переходить в SelectListItem для копирования. http://msdn.microsoft.com/en-us/library/system.web.webpages.html.selectlistitem(v=vs.111).aspx http://msdn.microsoft.com/en-us/library/ system.web.mvc.selectlistitem .aspx (v = vs.108) – stuartdotnet