0

Entity Framework で使用するためにセットアップした POCO モデル クラスがいくつかあります。DbContextValidateEntityオーバーライドでいくつかの検証を行います。DbEntityValidationResult関数からa を返すと、ValidateEntity実行時にいくつかDbValidationErrorの s を追加していることがわかります。次のコードを使用して、関数のModelState内部でこれらのエラーを確認することもできます...Controller

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
}

そして、このCharacterCreateModelビュー モードを使用して強く型付けされた Razor ビューでは、標準@Html.TextBoxForなどを使用します。

モデルからの検証エラーはCharacter正しく表示されますが、ValidateEntity関数からの検証エラーはそのプロパティ名に対して表示されません。

理由はありますか?

4

1 に答える 1

1

モデル レベルのプロパティを表示するには、コードに ValidationMessageFor ヘルパーを含める必要があります。

あなたが持っている必要があります

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

これでエラーが表示されない場合は、

@Html.ValidationSummary(true)

ビューの一番上に

@Html.ValidationSummary(false)

すべての検証エラーを確認し、実際に正しく追加されていることを確認できます。

于 2013-10-09T04:54:38.820 に答える