Заполнить раскрывающийся список из функции возврата Razor

Я пытаюсь заполнить раскрывающийся список значениями из таблиц базы данных, используя EF. Во-первых, я не уверен в возвращаемых значениях. Описание - это строка, поэтому я возвращаю список, но это не работает. Во-вторых, не так, как возвращаемые значения можно использовать для заполнения раскрывающегося списка на моей странице бритвы. Просмотрите любое руководство, которое будет оценено. В веб-формах это была просто привязка данных к элементу управления, это кажется довольно сложным.

 public List<string> getEstablishments()
        {
            var db = new mydbContext();
            result=db.TblEstablishment.Select(x => new { x.Description }).ToList();

            db.Dispose();
            return result;
        }

person AShah    schedule 01.03.2019    source источник
comment
Измените оператор выбора на Select(x => x.Description).ToList(). Теперь вы создаете анонимный объект и возвращаете его вместо строки.   -  person BugCatcherJoe    schedule 01.03.2019
comment
Спасибо! это возвращает список сейчас правильно   -  person AShah    schedule 01.03.2019


Ответы (2)


В бритве:

//in your code, myEstablishments would be passed in somehow
List<string> _myEstablishments = new List<string> {"one", "two"};
@Html.DropDownList(name: "myDropDownList", selectList: _myEstablishments.Select(s => new SelectListItem() { Text = s, Value = s });
person ylax    schedule 01.03.2019
comment
имя: не было нужно, но как только я передал список из своей функции, ваша команда сработала..... @Html.DropDownList(name,selectList: getEstablishments().Select(s => new SelectListItem() { Text = s, Value = с })); - person AShah; 02.03.2019

Измените оператор выбора на Select(x => x.Description).ToList(). Теперь вы создаете анонимный объект и возвращаете его вместо строки. Для привязки заведения в выпадающем списке вы можете сделать следующее:

public class EstablishmentOptionView
{
    public int EstablishmentId { get; set;}
    public string Description { get; set;}
}

public List<EstablishmentOptionView> getEstablishments()
{
            var db = new mydbContext();
            result=db.TblEstablishment.Select(x => new EstablishmentOptionView {EstablishmentId = x.Id, Description = x.Description }).ToList();

            db.Dispose();
            return result;
 }

//somewhere else 
SomeDropDownList.DataValueField = "EstablishmentId";
SomeDropDownList.DataTextField = "Description";
SomeDropDownList.DataSource = getEstablishments();
SomeDropDownList.DataBind();
person BugCatcherJoe    schedule 01.03.2019
comment
в MVC нет DataBinds/Razor? - person AShah; 02.03.2019
comment
О, извините, я прочитал веб-формы в вопросе и подумал, что вам нужна привязка данных в этой форме. - person BugCatcherJoe; 02.03.2019