furkan
furkan

Reputation: 99

MVC Create List and fill auto

How can I create an empty list and put all items to the list with several control Here is the items that I want to put in the list;

 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();

I have tried something like this for getting items to dropdownlist ;

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

how Can I get memberAdminOrMajor and memberBM

Upvotes: 3

Views: 264

Answers (2)

Sam FarajpourGhamari
Sam FarajpourGhamari

Reputation: 14741

Assuming you need both list in single view. So create a view model which contains your lists and other data:

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
}

In your action method fill the view model and pass to 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);
} 

View:

@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" />
}

Now if you have a post back action like this you could get user selected values:

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

But if you want marge 2 list in 1 list you could write:

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();

You could also concat to list:

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

Upvotes: 1

drneel
drneel

Reputation: 2907

I believe what you are looking for is a select list; and then you are not far off.

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

Upvotes: 0

Related Questions