In my controller this code:
[HttpPost] public ActionResult Edit(Company company, FormCollection IsCostCenters) { if (ModelState.IsValid) { Company objNewCompany = new Company(); //oParty.CostCenters.Clear(); using (PaymentAdviceEntityContainer db1 = new PaymentAdviceEntityContainer()) { objNewCompany = db1.Companies.Find(company.Id); objNewCompany.CostCenters.Clear(); string[] temp = IsCostCenters["CostCenters"].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var s in temp) { if (s != "false") { CostCenter oCostCenter = new CostCenter(); oCostCenter = db1.CostCenters.Find(Convert.ToInt32(s)); objNewCompany.CostCenters.Add(oCostCenter); } } db1.SaveChanges(); } db.Entry(company).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } ViewBag.CreatedById = new SelectList(db.Employees, "Id", "FirstName", company.CreatedById); return View(company); }
And my view code as below
@using PaymentAdviceEntity; @{ ViewBag.Title = "Edit"; List<CostCenter> clist = new List<CostCenter>(); clist = ((List<CostCenter>)ViewBag.CostCenters).ToList(); } <div style="line-height: 22px; width: 100%;height :3%; float: left; "> @{ foreach (var item in clist) { <div style="line-height: 22px; width: 28%; float: left;"> <span class="checkbox">@Html.CheckBox("CostCenters", item.IsChecked, new { @value = item.Id })</span> <span>@Html.DisplayFor(modelItem => item.Name)</span> </div> } }
So please what is reason ModelState.IsValid
is return false in page post time ...
Please post your Model Class.
To check the errors in your ModelState
use the following code:
var errors = ModelState .Where(x => x.Value.Errors.Count > 0) .Select(x => new { x.Key, x.Value.Errors }) .ToArray();
OR: You can also use
var errors = ModelState.Values.SelectMany(v => v.Errors);
Place a break point at the above line and see what are the errors in your ModelState
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With