Asp.net mvc 4 无原因获取EntityValidationErrors

Asp.net mvc 4 无原因获取EntityValidationErrors,asp.net-mvc-4,entity-framework-5,Asp.net Mvc 4,Entity Framework 5,我将MVC4与EntityFramework 5一起使用 在这个例子中,在我尝试用简单的表单参数保存一个新的“Contact”对象之后,我得到了两个EntityValidationError 其中一个联系人属性是“地址”,该属性在同一视图中填充(使用其他联系人的属性) 当我提交表单时,我会得到一个全新的联系人对象,该对象具有与表单参数匹配的完整地址atribute。 然而,当我试图保存它时,我会在联系人地址中得到EntityValidationError(确切地说是2…)中缺少的参数 我的看法是

我将MVC4与EntityFramework 5一起使用

在这个例子中,在我尝试用简单的表单参数保存一个新的“Contact”对象之后,我得到了两个EntityValidationError

其中一个联系人属性是“地址”,该属性在同一视图中填充(使用其他联系人的属性)

当我提交表单时,我会得到一个全新的联系人对象,该对象具有与表单参数匹配的完整地址atribute。 然而,当我试图保存它时,我会在联系人地址中得到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>

有什么想法吗?

从modelstate获取错误

使用Linq:

var allErrors = ModelState.Values.SelectMany(v => v.Errors);
另一种选择:

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;
}
公共静态列表GetErrorListFromModelState
(ModelStateDictionary modelState)
{
var query=modelState.Values中的from状态
从状态中的错误。错误
选择error.ErrorMessage;
var errorList=query.ToList();
返回错误列表;
}
资源:


只需从modelstate获取错误

使用Linq:

var allErrors = ModelState.Values.SelectMany(v => v.Errors);
另一种选择:

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;
}
公共静态列表GetErrorListFromModelState
(ModelStateDictionary modelState)
{
var query=modelState.Values中的from状态
从状态中的错误。错误
选择error.ErrorMessage;
var errorList=query.ToList();
返回错误列表;
}
资源:


请发布相关代码我不能。我是stackOverflow新手,没有声誉(这意味着我不能发布图片)复制并粘贴它,然后使用代码标记将其格式化为代码。最后有一点混乱,但我已经尽力了。您得到的实际错误消息是什么?如果您在调试器中深入研究异常,您应该准确地找到两个EntityValidationErrors所说的内容-这将帮助您找出问题所在。请发布相关代码我不能。我是stackOverflow的新手,没有声誉(这意味着我不能发布图片)复制并粘贴它,然后使用代码标记将其格式化为代码。最后有一点混乱,但我已经尽力了。您得到的实际错误消息是什么?如果您在调试器中深入研究异常,您应该准确地找到两个EntityValidationErrors所说的内容-这将帮助您找出问题所在。