2012-04-19 53 views
0

在HomeController.cs为什么ModelState.IsValid是错误的,因为条件为真?

[HttpPost] 
public ActionResult Index(SecurityMappingModel objModel) 
{ 

    //edit code 

    if (objModel.Id != Guid.Empty) 
    { 
     if (ModelState.IsValid) 
     { 
      mappings = (List<SecurityMappingModel>)Session["Mappings"]; 
      var objRemove = mappings.FirstOrDefault(m => m.Id == objModel.Id); 
      if (objRemove != null) 
      { 
       mappings.Remove(objRemove); 
       mappings.Add(objModel); 
       ViewBag.Mappings = mappings; 
      } 
      Session["Mappings"] = mappings; 
return RedirectToAction("Index"); 
} 

内部objModel一个的字段具有值0,因为它是一个文本字段我把值插入,但控制器oject objModel内示出该字段值是零:(:(为什么???

+0

我无法理解你的问题。 – SLaks 2012-04-19 14:02:46

+0

我把所有东西都放入Session对象,然后将它传递给Webgrid,以访问Webgrid上的所有数据... Webgrid具有编辑,删除按钮...当我尝试编辑它时,它将进入Post Index()Action这里我得到因为ModelState错误是错误的原因?它必须是正确的 – Neo 2012-04-19 14:05:08

+0

当我插入数据在那个时候ModelState是如预期的,但当我尝试编辑它显示我的错误为什么?我哪里错了? – Neo 2012-04-19 14:07:06

回答

7
if (yourGuid != Guid.Empty) 

+0

喜, [HttpPost] 公共的ActionResult指数(SecurityMappingModel objModel) { //编辑代码 如果(objModel.Id!= Guid.Empty) { 如果(ModelState.IsValid) { 映射=(列表) SESS离子[ “映象”]; var objRemove = mappings.FirstOrDefault(m => m.Id == objModel.Id); 会话[“Mappings”] =映射; 如果条件通过但是ModelState出现错误,Guid会在那里做第一个:为什么? – Neo 2012-04-19 13:54:22

+0

请编辑您的问题。 – SLaks 2012-04-19 13:56:08

+0

请参阅我编辑的问题 – Neo 2012-04-19 14:00:41

0

我也遇到这样那样的错误。

也许解决你的问题把这样的代码放在你的Home.cshtml视图中:

@Html.HiddenFor(model => model.Id) 
相关问题