2016-02-01 5 views
0

Я только начал развиваться, используя шаблон проектирования MVC 5, я пытаюсь заполнить мою DropDownList с данными из базы данных, это то, что у меня есть в моей стране модели:MVC5 заселения DropDownList

public class Country 
{ 
    public DataTable GetAllCountries() 
    { 
    string theSql = "SELECT * FROM Country"; 
    IDataAccess dataAccess = new DataAccess(); 
    return dataAccess.GetData(theSql); 
    } 
} 

Тогда в мой контроллер у меня есть:

public ActionResult Index() 
{ 
    List<SelectListItem> objResult = new List<SelectListItem>(); 
    Models.Country country = new Models.Country(); 
    DataTable result = country.GetAllCountries(); 

    foreach(DataRow item in result.Rows) 
    { 
     SelectListItem temp = new SelectListItem(); 
     temp.Value = item["id"].ToString(); 
     temp.Text = item["country"].ToString(); 
     objResult.Add(temp); 
    } 
     ViewBag.DropDownResult = objResult; 
     return View(); 
} 

Тогда в моей Частичный вид у меня есть:

@model MyProject.Models.Country 
@Html.DropDownListFor(ViewBag.DropDownResult as List<SelectListItem>) 

Howvever на DropDownListFor я receieve этой ошибки:

Нет перегрузки для метода «DropDownListFor» принимает аргументы 1

Кто-нибудь знает, что я делаю неправильно? Если я правильно следую примеру MVC?

Спасибо ребята

+0

Добавить объект, в который вы хотите положить товары, чтобы сохранить выбранный товар и использовать его. Рабочий пример кода в этом [post] (http://stackoverflow.com/questions/34300916/dropdownlist-from-ienumerable/34301135#34301135) – Shyju

+0

@Shyju Я добавил свойство только для проверки вещей, но он все еще не работает – KTOV

+0

Добавлено недвижимость где? В вашей модели зрения? Пока вы используете это новое свойство в своем вспомогательном методе DropDownListFor, он должен работать нормально. Взгляните на ссылку, опубликованную в предыдущем комментарии. В нем есть рабочий образец. – Shyju

ответ

1

Вы должны указать, в какой объект является собственностью вы хотите отобразить.

@Html.DropDownListFor требует по крайней мере 2 параметра. Первым должен быть объект, а второй - список, содержащий элементы. Нечто вроде:

@model MyProject.Models.Country 
@Html.DropDownListFor(m => m.SomeProperty, ViewBag.DropDownResult as List<SelectListItem>) 
+0

' DropDownListFor() ' не принимает «string» в качестве первого параметра, а ваш код генерирует исключение - он должен быть '@ Html.DropDownListFor (m => m.SomeProperty, ViewBag.DropDownResult как List )' –

+0

@StephenMuecke Я заявил в ответе, что это должен быть объект. Отредактировано, чтобы быть более точным. – Zippy

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