1

span タグやクラスなどではなく、validationmessagefor の正確なエラー文字列のみを取得したい asp.net mvc4 アプリケーションを取得しました。

現在、ValidationMessageFor から以下が返されています。

<span class="field-validation-error" data-valmsg-replace="true" data-valmsg-for="Password">
     <span class="" for="Password" generated="true">The Password field is required.</span>
</span>

返品のみ希望:パスワード フィールドは必須です。

これは、正確な値を別の要素属性に挿入する必要があるためです (そのため、HTML タグを使用できません)。

基本的に、エラー メッセージ自体のみを返すカスタム ValidationMessageFor html ヘルパーが必要です。

どうすればいいですか?

4

3 に答える 3

2

エラー メッセージは、ModelState.

たとえば、必要なフィールド FirstName がある場合、次のようなエラー メッセージが表示されます。

ModelState["FirstName"].Errors[0].ErrorMessage

この場合、エラーは 1 つだけであると予想されます。このプロパティは、「FirstName フィールドは必須です」を返します。

ModelStateを使用して、コントローラーまたはビューからアクセスできますViewDate.ModelState

ModelStateであるタイプModelStateDictionaryですIDictionary<string, ModelState>。文字列型のインデクサー プロパティのみがあります。このため、 を使用してアクセスすることはできませんModelState[p => p.Property]。ただし、これに役立つ拡張メソッドを簡単に作成できます。

public static class ModelStateExtension
{
    public static ModelState For<TModel>(this ModelStateDictionary dictionary,
        Expression<Func<TModel, object>> expression)
    {
        string propertyName = ExpressionHelper.GetExpressionText(expression);

        return dictionary[propertyName];
    }
}

次のように使用できます。

string errorMessage = ModelState.For<Person>(p => p.FirstName).Errors[0].ErrorMessage;

ErrorMessage必要に応じて、拡張メソッドが最初のエラーの代わりに直接返すようにすることができますModelState.

于 2013-08-23T12:48:34.927 に答える
0

エラーにアクセスするには、ModelState.Errorsプロパティを使用する必要があります。を含む

ModelErrorCollection

のコレクションです

モデルエラー

ここを参照してください http://msdn.microsoft.com/en-us/library/system.web.mvc.modelstate.errors%28v=vs.108%29.aspx

その後、独自のヘルパーを作成し、クライアント側でそれらのメッセージにアクセスできます。

于 2013-08-23T12:42:48.197 に答える