Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why ModelState.IsValid always return false in mvc [duplicate]

Tags:

c#

asp.net-mvc

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

like image 337
Sraj Mane Avatar asked Mar 11 '13 07:03

Sraj Mane


1 Answers

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.

like image 114
Karthik Chintala Avatar answered Oct 06 '22 00:10

Karthik Chintala