2013-12-10 71 views
1

我使用MVC 4的EntityFramework 5获取EntityValidationErrors没有原因

在这个例子中,我获得两个EntityValidationErros后,我尽量节省用简单的形式参数的新的“联系人”对象。

联系人的属性之一就是“地址”,这是被填充上了同样的观点(与其他联系人的属性。

当我提交表单,我得到一个全新的联系对象,具有完整的地址。属性附加伤害其 然而,相匹配的形式参数,当我试图挽救它,我得到EntityValidationError(2确切..)失踪在我的联系人的地址参数的

我的观点:

<div class="editor-label"> 
    @Html.LabelFor(model => model.Address.City) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Address.City) 
     @Html.ValidationMessageFor(model => model.Address.City) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Address.Street) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Address.Street) 
     @Html.ValidationMessageFor(model => model.Address.Street) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Address.State_province) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Address.State_province) 
     @Html.ValidationMessageFor(model => model.Address.State_province) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Address.Zip_postalCode) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Address.Zip_postalCode) 
     @Html.ValidationMessageFor(model => model.Address.Zip_postalCode) 
    </div> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Address.Country) 
    </div> 
    <div class="editor-field"> 
     @Html.EditorFor(model => model.Address.Country) 
     @Html.ValidationMessageFor(model => model.Address.Country) 
    </div> 

    <br /> 
    <p> 
     <input type="submit" value="Save" /> 
    </p> 

创建Ac内部联系控制器:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(Contact contact) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       TempData["contact"] = contact; 
       unitOfWork.currentClient.Contacts.Add(contact); 
       unitOfWork.Save(); 
       return View("Index"); 
      } 

      return View(contact); 
     } 
     catch (Exception ex) 
     { 
      return View(contact); 
     } 
    } 

任何想法?

+1

请张贴相关的代码 – Maess

+0

我不能。我是stackOverflow的新手,没有声望(这意味着我无法发布图片) – user3087881

+0

复制并粘贴它,然后使用代码标签将其格式化为代码。 – Maess

回答

1

只需从modelstate中获取错误即可。

使用LINQ:

​​

另一种选择:

public static List<string> GetErrorListFromModelState 
               (ModelStateDictionary modelState) 
{ 
     var query = from state in modelState.Values 
        from error in state.Errors 
        select error.ErrorMessage; 

     var errorList = query.ToList(); 
     return errorList; 
} 

资源:

How to get all Errors from ASP.Net MVC modelState?

相关问题