#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 — это показать мне, что я подчеркиваю