Заполнить выпадающий список из базы данных в режиме создания

#c# #asp.net-mvc #asp.net-mvc-4

#c# #asp.net-mvc #asp.net-mvc-4

Вопрос:

Как я могу извлекать и вставлять данные в определенное время в одном представлении в mvc razor view? Я имею в виду заполнить выпадающий список из базы данных в create view.

Я хочу заполнить следующее, когда добавлю модели subject и cheater.

  • список отделов
  • список семестров
  • стандартный список
  • список потоков

модель читера:

 namespace firstapp.Models
{
  public class chepter
  {
      [ForeignKey("dip_id")]
      public int dipart_id { get; set; }
      public int chep_id { get; set; }
      public string subject { get; set; }
      public string chepter { get; set; }
      public List<dipartment> dipartlist { get; set; }
      public List<dipartment> stdlist { get; set; }
      public List<dipartment> semlist { get; set; }
      public List<dipartment> stremlist { get; set; } 
   }
} 
  

модель отдела:

 namespace firstapp.Models
{
   public class dipartment 
   {        
      public int dip_id { get; set; }
      public string dipart { get; set; }
      public string std { get; set; }
      public string sem { get; set; }
      public string strem { get; set; }
   }
}
  

Комментарии:

1. Попробуйте это Динамически заполняемое_дропдаун_базированное_от_е_дропдаун_значение

2. это java …….. не mvc, пожалуйста, дайте мне ответ в mvc……….

Ответ №1:

 @Html.DropDownListFor(model => model.dipart_id, new SelectList(Model.dipartlist.Select(s => new SelectListItem() { Value = s.dip_id, Selected = false, Text = s.dipart })), "Select")
  

Ответ №2:

Измените свою модель, чтобы свойство list было selectlist:

 public SelectList<dipartment> dipartlist { get; set; }
  

Затем, когда вы заполняете модель, вызываете метод класса обслуживания (у вас может не быть уровня обслуживания, я просто предпочитаю не иметь вызовов базы данных в контроллере)

 dipartlist = _departmentService.GetAsSelectList();
  

Метод GetAsSelectList обслуживания выглядит следующим образом:

 public SelectList GetAsSelectList()
{
    return (from d in _context.Set<department>().OrderBy(x => x.dipart)
                    select new
                    {
                        Id = d.dipart_id,
                        Name = d.dipart
                    }).ToList();
}
  

И, наконец, ваш вид:

 @Html.DropDownListFor(model => model.dipart_id, Model.dipartlist)
  

Этот метод означает, что у вас нет linq ни в представлении, ни в контроллере. Кроме того, поскольку вы создаете список выбора только в одном месте (сервис), вы можете кэшировать его с помощью MemoryCache, чтобы предотвратить многократные запросы одних и тех же данных. И, поскольку похоже, что вы заполняете 4 списка выбора, это может быть полезно.

Комментарии:

1. : Спасибо, что заинтересовались моим вопросом и вашим предложением. Но VS показывает мне красное подчеркивание в списке выбора. Что я должен для этого сделать?? public SelectList<dipartment> dipartlist { получить; установить; }

2. Вам нужно добавить using System.Web.Mvc; в верхней части файла

3. продолжите эту проблему после того, как я использую это пространство имен ……..vs — это показать мне, что я подчеркиваю