为什么我的ValidateEntity错误不会显示在我的视图中?

时间:2013-10-09 01:43:24

标签: asp.net asp.net-mvc entity-framework razor

我已经设置了一些POCO Model类,我们已经设置好与Entity Framework一起使用。我在DbContext的{​​{1}}覆盖中进行了一些验证。我从ValidateEntity函数返回DbEntityValidationResult,我可以看到在运行期间我添加了一些ValidateEntity。我甚至可以使用以下代码在DbValidationError函数内的ModelState内看到这些错误...

Controller

但由于某些原因,这些错误没有显示在Razor视图中所需的属性名称。我使用的视图模型如下所示......

catch (DbEntityValidationException ex)
{
    foreach (var entity in ex.EntityValidationErrors)
    {
        foreach (var error in entity.ValidationErrors)
        {
            ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
        }
    }
}

在我使用此public class CharacterCreateModel { private Character m_character; #region Properties public Character Character { get { return m_character; } set { m_character = value; } } #endregion } 观看模式强力输入的Razor视图中,我只使用标准CharacterCreateModel等。

来自@Html.TextBoxFor模型的验证错误会正确显示,但Character函数的验证错误未显示该属性名称。

知道为什么不呢?

1 个答案:

答案 0 :(得分:1)

您需要在代码中包含ValidationMessageFor帮助程序以显示模型级属性。

你应该

@Html.EditorFor(model => model.Character)
@Html.ValidationMessageFor(model => model.Character)

如果未显示错误,则更改

@Html.ValidationSummary(true)

在您的视图顶部

@Html.ValidationSummary(false)

因此您可以看到所有验证错误,并确保它们实际上已正确添加。