2

わかりました、私はこれに苦労しています。MVC4 と検証プラグインを使用した jQuery でバニラ フォーム検証 (テキスト ボックスを強調表示し、赤いテキストを表示) の例を見つけましたが、カスタム スタイルのものを実行しようとするとあまり役に立ちません。

例、ajax フォームで、ユーザーがフォームを送信し、パラメーターが (投稿後のコントローラーで) 間違っている場合、ページにカスタム HTML 要素を表示したいと思います。そうすれば、自分のサイトに合わせて div のスタイルを適切に設定できます。

答えを見つけるための探求の中で、ModelState.AddModelError() を発見しました。スタイルを設定できるページに を追加するだけなので、div ではなくテキストを表示したいだけの場合に最適ですが、それ以上のものが必要です。現れること。

誰かがこれの良いデモ/例を持っていますか?

簡単なサンプル画像を追加しました。パスワードが正しくない場合は、右側のメッセージ (html と css の組み合わせ) を表示したいと思います。

ここに画像の説明を入力

4

2 に答える 2

1

ビューでは、ValidationMessageFor を使用してクラスを追加できます。これを使用するには、AddModelError で正しいプロパティ名を指定したこと、またはクラスでメタデータ検証を使用したことを確認してください。TryValidateModel()

コードを表示:

@Html.ValidationMessageFor(model => model.PropertyX, null, new { @class ="error-propertyx" })

検証モデル コード:

[Required(ErrorMessageResourceName = "RequiredField", ErrorMessageResourceType = typeof(ValidationRes))]
public string PropertyX { get; set; }

または、もっと複雑なものが必要な場合は、次のようなアプローチを使用できます

http://buildstarted.com/2010/09/14/creating-your-own-modelmetadataprovider-to-handle-custom-attributes/

別の拡張メソッドを作成することもオプションです。これは最適なコードではないことに注意してください。

public static MvcHtmlString CustomValidatioMessageFor<TModel, TProperty>(this HtmlHelper obj, Expression<Func<TModel,TProperty>> expression){

    string html = (string)obj.ValidationMessageFor(expression);
    html = "<div>" + html + "</div>";
    return new MvcHtmlString(html);
}
于 2012-11-13T15:00:21.033 に答える