Binding a ListBoxFor to a Model in MVC 3 and auto selecting multiple items using another Model

540 Views Asked by At

I have a scenario where i have list of events associated to an admin with events having a eventid and eventname property.A bidder can be assigned to an event. So a bidder can bid for multiple events.So while creating a bidder for an admin specified events.First i want to bind a ListBoxFor to a model which have all the events associated to the admin. Also on binding the ListBoxFor i have to keep in mind that it selects those events which are associated to this bidder.

1

There are 1 best solutions below

0
On

Model

public class Admin {
        private List<int> _selectedEventIds;
        public List<int> SelectedEventIds {
            get {
                return _selectedEventIds ?? new List<int>();
            }
            set {
                _selectedEventIds = value;
            }
        }
        private List<Events> _eventList;
        public MultiSelectList EventList {
            get {
                return new MultiSelectList(
                          _listeFonctions,
                          "EventId", // dataValueField
                          "EventName" // dataTextField
                );
            }
        }

        public Admin() { }
        public Admin(List<int> selectedEventIds, List<Events> eventList) {
            SelectedEventIds = selectedEventIds;
            _eventList = eventList;
        }
    }

    public class Event {
        public int EventId { get; set; }
        public string EventName { get; set; }

        public Event() { }
        public Event(int eventId, string eventName) {
            EventId = eventId;
            EventName = eventName;
        }
    }

View

@model Admin

@using(Html.BeginForm()){
     @Html.ListBoxFor(admin => admin.SelectedEventIds, Model.EventList)
     <input type="submit" value="Save"/>
}

I presume you already have the controller.