1

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....

Beena Gupta
  • 178
  • 12

0 Answers0