在create view中填充数据库中的下拉列表

时间:2014-06-18 12:41:54

标签: c# asp.net-mvc asp.net-mvc-4

如何在mvc razor视图中的一个视图中的特定时间获取和插入数据?我的意思是在创建视图中填充数据库的下拉列表。

我想在添加主题和骗子模型时填写以下内容。

  • 部门名单
  • 学期列表
  • 标准清单
  • 流列表

骗子模型:

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; }
   }
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

更改模型,以便列表属性为选择列表:

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个选择列表,这可能很有用。