0

私はこの記事をフォローしています

http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs

ASP.NETMVCWebアプリケーションにビジネスロジックを備えたサービスレイヤーを含めるため。

Html.ValidationSummaryusingModelStateクラスでサービスレイヤーからビューモデルにメッセージを渡すことができます。

ビューモデルで(DataAnnotation属性を使用して)基本的な検証ロジックを実行しClientValidation、デフォルトで有効にしています。これにより、フォームのすべてのフィールドにエラーメッセージが表示されます。

サービスレイヤーからのビジネスロジックエラーメッセージはHtml.ValidationSummary、フォームをサーバーに投稿した後にのみ表示されます。

サービスレイヤーからの検証後、1つ以上のフィールドを強調表示し、サービスレイヤーからのメッセージをの代わりにこれらのフィールドに表示したいと思いますHtml.ValidationSummary

それを行う方法はありますか?

4

2 に答える 2

2

サーバー上での検証の外観は次のとおりです。

protected bool ValidateProduct(Product productToValidate)
{
    if (string.IsNullOrEmpty(productToValidate.Name))
        _validatonDictionary.AddError("Name", "Name is required.");
    if (string.IsNullOrEmpty(productToValidate.Description))
        _validatonDictionary.AddError("Description", "Description is required.");
    if (productToValidate.UnitsInStock < 0)
        _validatonDictionary.AddError("UnitsInStock", "Units in stock cannot be less than zero.");
    return _validatonDictionary.IsValid;
}

ビュー内のこれらのフィールドに対応するValidationMessageForヘルパーを用意するだけで、サーバーからのエラーメッセージが対応するフィールドに関連付けられます。

@using (Html.BeginForm())
{
    <div>
        @Html.LabelFor(x => x.Name)
        @Html.EditorFor(x => x.Name)
        @Html.ValidationMessageFor(x => x.Name)
    </div>
    <div>
        @Html.LabelFor(x => x.Description)
        @Html.EditorFor(x => x.Description)
        @Html.ValidationMessageFor(x => x.Description)
    </div>
    <button type="submit">Create</button>
}
于 2012-07-09T21:13:57.347 に答える
0

ダリンのおかげで、私は自分の問題の解決策を見つけました。

詳細に:

使うことができます

 _validatonDictionary.AddError("Name of my field", "Custom message")

そのため、メッセージを表示して、その特定のフィールドを強調表示できます(DataAnnotationで行うのは非常に簡単です)。

使用する特定のフィールドを強調表示せずに、ValidationSummaryにメッセージだけを表示したい場合

_validatonDictionary.AddError(string.Empty, "Custom message")

注意してくださいstring.Empty

于 2012-07-10T08:02:49.140 に答える