Asp.net 为什么不';我的ValidateEntity错误是否显示在我的视图中?

Asp.net 为什么不';我的ValidateEntity错误是否显示在我的视图中?,asp.net,asp.net-mvc,entity-framework,razor,Asp.net,Asp.net Mvc,Entity Framework,Razor,我已经设置了一些POCO模型类,用于实体框架。我在我的DbContext的ValidateEntity覆盖中执行一些验证。我从ValidateEntity函数返回一个DbEntityValidationResult,我可以看到在运行时我确实添加了一些DbValidationErrors。我甚至可以在我的控制器函数的ModelState中看到这些错误,使用以下代码 catch (DbEntityValidationException ex) { foreach (var entity in

我已经设置了一些POCO模型类,用于实体框架。我在我的
DbContext
ValidateEntity
覆盖中执行一些验证。我从
ValidateEntity
函数返回一个
DbEntityValidationResult
,我可以看到在运行时我确实添加了一些
DbValidationError
s。我甚至可以在我的
控制器
函数的
ModelState
中看到这些错误,使用以下代码

catch (DbEntityValidationException ex)
{
    foreach (var entity in ex.EntityValidationErrors)
    {
        foreach (var error in entity.ValidationErrors)
        {
            ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
        }
    }
}
但由于某些原因,这些错误不会在Razor视图中显示所需的属性名称。我使用的视图模型如下所示

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
,等等

来自
字符
模型的验证错误将正确显示,但该属性名称不会显示来自
验证属性
函数的验证错误


知道为什么吗?

您需要在代码中包含ValidationMessageFor helper以显示模型级属性

你应该

@Html.EditorFor(model => model.Character)
@Html.ValidationMessageFor(model => model.Character)
如果不显示错误,则更改

@Html.ValidationSummary(true)
在您的视图顶部

@Html.ValidationSummary(false)

因此,您可以查看所有验证错误,并确保它们确实被正确添加。

发布您的查看页面!