Я получил сообщение об ошибке «Нет элемента ViewData типа« IEnumerable »

Я получил сообщение об ошибке «Нет элемента ViewData типа« IEnumerable », который имеет ключ« TIMEZONE ».

Посмотреть

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %> <%= Html.DropDownList("TIMEZONE", (IEnumerable)ViewData["TIMEZONE"], "Select Timezone")%> 

controller

 ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value"); return View(); 

Модельная страница

 public static IList<KeyValuePair> getTIMEZOMES { get { Dbhelper DbHelper = new Dbhelper(); IList<KeyValuePair> Timezone = new List<KeyValuePair>(); DbCommand cmd = DbHelper.GetSqlStringCommond("SELECT * FROM TMP_TIMEZONES"); DbDataReader Datareader = DbHelper.ExecuteReader(cmd); while (Datareader.Read()) { Timezone.Add(new KeyValuePair(Datareader["ABBR"].ToString(), Datareader["NAME"].ToString())); } return Timezone; } } 

Plz Дайте решение.

Возможна одна из возможных причин. В controllerе вы не можете получать данные в ViewData["TimeZone"] . Попробуйте отладить его и посмотреть, что вы получаете.

Вы не должны использовать одно и то же свойство для привязки выпадающего списка и списка избранных. Они должны быть разными. Первый аргумент должен представлять скалярное свойство, которое будет использоваться как имя сгенерированного выделения. Второй аргумент должен быть списком:

 <%= Html.DropDownList( "SelectedTimeZone", (IEnumerable)ViewData["TIMEZONE"], "Select Timezone" ) %> 

Это будет использовать коллекцию, содержащуюся в ViewData["TIMEZONE"] чтобы сгенерировать выбор следующим образом:

  

Когда форма отправлена, вы будете искать свойство SelectedTimeZone в запросе для получения соответствующего выбранного значения.

При этом я заметил, что ваше мнение строго типизировано для какой-то модели:

 Inherits="System.Web.Mvc.ViewPage" 

но вы не передаете какую-либо модель при возврате этого представления:

 ViewData["TIMEZONE"] = new SelectList(EventModel.getTIMEZOMES, "Key", "Value"); return View(); //