【问题标题】:Fill dropdown list from database in create view在创建视图中从数据库中填充下拉列表
【发布时间】:2014-06-18 22:50:49
【问题描述】:

如何在 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; }
   }
}

【问题讨论】:

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


【解决方案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】:

    更改您的模型,使列表属性成为一个选择列表:

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

    【讨论】:

    • :感谢您对我的问题和您的建议感兴趣。但是 VS 向我显示选择列表的红色下划线。我该怎么办?公共选择列表 dipartlist { 获取;放; }
    • 文件顶部需要添加using System.Web.Mvc;
    • 在我使用这个命名空间后继续这个问题........vs是显示我阅读下划线
    猜你喜欢
    • 2011-11-09
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多