I know this question is asked many times and I had also tried with different approaches but failed to solved this simple issue.I am using Jquery Select2 Here is my Html dropdown list
@Html.DropDownListFor(x => Model.zipCodeIds, new MultiSelectList(Model.zipCodes.Select(x => new { Value = x.Code, Text = x.State }), "Value", "Text", Model.zipCodes),
new { multiple = "true", @id = "servicelocation-select", @class = "form-control" })
and my ViewModel is RegisterUserViewModel.cs
public class RegisterUserViewModel
{
public RegisterUserViewModel()
{
zipCodeIds = new List<int>();
}
....
public ZipCodes zipCodes { get; set; }
public List<int> zipCodeIds { get; set; }
}
My controller looks like
// GET: /Account/Register
[AllowAnonymous]
public ActionResult Register()
{
RegisterUserViewModel model = new RegisterUserViewModel();
var db = new VendorManagementContext();
var servicetypes = db.ServiceTypes.Select(x =>
new SelectListItem()
{
Text = x.Name.ToString(),
Value = x.Id.ToString()
}).ToList();
var zipCodes = db.ZipCodes.Select(x =>
new SelectListItem()
{
Text = x.Code.ToString(),
Value = x.Id.ToString()
}).ToList();
model.serviceTypes = servicetypes;
//model.serviceType = servicetypes.FirstOrDefault().Value;
//model.zipCodes = zipCodes;
//model.zipCodeIds = ZipCodes.FirstOrDefault().Value;
model.zipCodeIds = new List<int>() { 2, 3, 5, 7 };
return View(model);
}
[HttpPost]
[AllowAnonymous]
public async Task<ActionResult> Register(RegisterUserViewModel model){
....
VendorServiceLocation vendorServiceLocation = new VendorServiceLocation();
vendorServiceLocation.ZipCode_ID = Convert.ToInt32(model.zipCode);
List<SelectListItem> selectedItems = model.zipCodes.Where(p => model.zipCodes.Contains(int.Parse(p.zipCodeIds))).ToList();
if (model.zipCodeIds != null)
{
List<ZipCodes> selectedItems = model.zipCodes.Where(p => model.zipCodeIds.Contains(int.Parse(p.Code))).ToList();
ViewBag.Message = "Selected Fruits:";
foreach (var selectedItem in selectedItems)
{
selectedItem.Code = (model.zipCodeIds).ToString();
//ViewBag.Message += "\\n" + selectedItem.Text;
}
}
.....
}
Here is zipcodes.cs
public partial class ZipCodes
{
[Key]
public int Id { get; set; }
public string State { get; set; }
public string Code { get; set; }
}
and here is VendorServicesLocation file where have to store list of zipcodes
public partial class VendorServiceLocation
{
public VendorServiceLocation()
{
}
public int ID { set; get; }
public int VendorService_ID { set; get; }
public int ZipCode_ID { set; get; }
public virtual ICollection<VendorService> VendorService { set; get; }
public virtual ZipCodes ZipCodes { set; get; }
}
}
Please someone helps where I am getting wrong....