MVC创建列表并自动填充

本文关键字:填充 创建 列表 MVC | 更新日期: 2023-09-27 18:08:16

如何创建一个空列表并使用几个控件将所有项放入列表这是我想放在列表里的项目;

 var memberAdminOrMajor = Db.Members
     .Where(m => m.MemberType == MemberTypeForReeve.BelediyeBaskani)
     .OrderBy(m => m.Id)
     .Select(m => m.Mail)
     .ToList();
 var memberBM = Db.Members
     .Where(m => m.MemberType == MemberTypeForReeve.SahaElemanı)
     .OrderBy(m => m.Id)
     .Select(m => m.Mail)
     .ToList();

我已经尝试过这样的东西来获得项目下拉列表;

var list = new List<DropDownListItem>();
var MembersForDrop = Db.Members.OrderBy(o => o.Sira)
    .Where(p=>p.MemberType == (MemberTypeForReeve)2);
foreach (var temp in MembersForDrop)
{
    list.Add(new DropDownListItem() 
    { 
        Text = temp.Name + "." + temp.SurName, 
        Value = temp.Id 
    });
}

如何得到memberAdminOrMajormemberBM

MVC创建列表并自动填充

假设您需要在一个视图中同时列出这两个列表。因此,创建一个视图模型,其中包含列表和其他数据:

public class MyViewModel
{
    public IEnumerable<SelectListItem> MemberAdminOrMajors { get; set; }
    public IEnumerable<SelectListItem> MemberBMs { get; set; }
    public int SelectedAdmin {get; set;}
    public int SelectedBM {get; set; }
    // other data
}

在你的动作方法中填充视图模型并传递给view:

public ActionResult MyAction()
{
     var model=new MyViewModel
     {
         MemberAdminOrMajors = Db.Members
             .Where(m => m.MemberType == MemberTypeForReeve.BelediyeBaskani)
             .OrderBy(m => m.Id)
             .Select(m => new SelectListItem{ Text=m.Mail, Value=m.Id });
         MemberBMs= Db.Members
             .Where(m => m.MemberType == MemberTypeForReeve.SahaElemanı)
             .OrderBy(m => m.Id)
             .Select(m => new SelectListItem{ Text=m.Mail, Value=m.Id });
         // collectiong other data
     }
     return View(model);
} 

视图:

@model MyNamespace.MyViewModel
@using (Html.BeginForm())
{
    @Html.DropDownListFor(model => model.SelectedAdmin, Model.MemberAdminOrMajors)
    @Html.DropDownListFor(model => model.SelectedBM, Model.MemberBMs)
    <input type="submit" value="submit" class="btn btn-default" />
}

现在如果你有一个这样的post back动作你可以得到用户选择的值:

[HttpPost]
public ActionResoult MyAction(MyViewModel model)
{
    var adminId = model.SelectedAdmin;
    var bmId = model.SelectedBM;
    // rest of code
}

但是如果你想把2个列表放到1个列表中你可以这样写:

var newList=Db.Members
    .Where(m => m.MemberType == MemberTypeForReeve.BelediyeBaskani
        || m.MemberType == MemberTypeForReeve.SahaElemanı)
    .OrderBy(m => m.Id)
    .Select(m => new SelectListItem{ Text=m.Mail, Value=m.Id })
    .ToList();

您也可以concat列出:

var newList=memberAdminOrMajor.Concat(memberBM)
    .Select(m => new SelectListItem{ Text=m.Mail, Value=m.Id });

我相信你正在寻找的是一个选择列表;然后你就不远了。

        var MembersForDrop = 
            Db.Members
                .OrderBy(o => o.Sira)
                .Where(p=>p.MemberType == (MemberTypeForReeve)2)
                .Select(m => new SelectListItem() { Text = string.Format("{0}.{1}", m.Name, m.Surname), Value = m.Id});
        SelectList sl = new SelectList(MembersForDrop);