【问题标题】:Why don't my ValidateEntity errors show up in my view?为什么我的 ValidateEntity 错误没有显示在我的视图中?
【发布时间】:2013-10-09 01:43:24
【问题描述】:

我已经设置了一些用于实体框架的 POCO 模型类。我在DbContextValidateEntity 覆盖中做了一些验证。我从ValidateEntity 函数返回一个DbEntityValidationResult,我可以看到在运行时我确实添加了一些DbValidationErrors。我什至可以在我的Controller 函数内部的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 等。

来自Character 模型的验证错误正确显示,但来自ValidateEntity 函数的验证错误未针对该属性名称显示。

知道为什么不?

【问题讨论】:

  • 发布您的查看页面!

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


【解决方案1】:

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

你应该有

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

如果这没有显示错误改变

@Html.ValidationSummary(true)

在您的视图顶部到

@Html.ValidationSummary(false)

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多