0

カスタムしたい@Html.ValidationMessageFor

私はこのコードを持っていますが、それは を使用しており@Html.ValidationMessageFor、HTML 形式で表示され、エラーの戻りのみが必要です。

これを行う方法?

私のコード:

public static MvcHtmlString MyValidationMessageFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
    {
        return MvcHtmlString.Create(helper.ValidationMessageFor(expression).ToString());
    }
4

3 に答える 3

2

これの多くは、DataAnnotations から実行できます。何を検証していますか?たとえば、必須の場合は、

[Required(ErrorMessage= "Please enter something, anything, PLEASE!!!! Come on, I've been nice, just do it! DON'T LEAVE ME EMPTY FOR THE LOVE OF GOD")]
public string MyValue

より劇的な効果のために編集されました。

おっと!私はこの方法を間違って読んでいます。メッセージが欲しいだけです。これを試すことができます:

public static T GetAttributeFrom<T>(this object instance, string propertyName) where T : Attribute
{
    var attrType = typeof(T);
    var property = instance.GetType().GetProperty(propertyName);
    return (T)property .GetCustomAttributes(attrType, false).First();
}


var RequiredMessage = player.GetAttributeFrom<RequiredAttribute>("MyValue").ErrorMessage;

ソース:コードからデータ注釈を取得する方法は? (プログラムで)

于 2012-10-25T01:30:27.640 に答える
0

カスタムバリデータの作成をわかりやすく説明する優れた情報源を見つけました。ここに投稿するには情報が多すぎるため、次のリンクに従ってください: http://tdryan.blogspot.com/2010/12/aspnet-mvc-3-custom-validation.html

これは私をやる気にさせ、このチュートリアルに基づいて多くのバリデーターを作成しました。

幸運を。

于 2012-10-25T01:39:33.530 に答える
0

次のコードを使用して、すべてのエラー メッセージを取得します。

StringBuilder sb = new StringBuilder();
foreach (ModelState state in ModelState.Values)
    foreach (ModelError error in state.Errors)
        sb.AppendFormat("<div>{0}</div>", error.ErrorMessage);

必要なコントロールのエラー メッセージのみを取得するために、このコードを少し変更するだけで済みます。

于 2012-10-25T03:11:10.790 に答える