実装せずにクライアント側の検証を使用してカスタム検証属性を作成するにはどうすればよいIClientValidatable
ですか?
クライアント側はどのようSystem.ComponentModel.DataAnnotations.RequiredAttribute
に検証しますか?
System.Web.MVC
これを行う理由は、別のプロジェクトのクラスのオブジェクトをビューのモデルとして使用しており、そのプロジェクトへの参照を追加したくないためです。
詳細情報を追加する編集:
IClientValidatable
目立たない検証で後で使用されるカスタム属性を HTML に追加するために使用されることを私は知っています。クライアントで検証を行うには、javascript コードを追加する必要があることはわかっています。
私が知らないのは、カスタム検証属性からの情報を使用して、目立たない検証が機能するために必要な属性を HTML に追加する方法です。
これは私のカスタム検証属性です:
public class RequiredGuidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Guid? guidValue = value as Guid?;
if (guidValue == null)
return false;
return guidValue != Guid.Empty;
}
}
これは、属性が適用された私のプロパティです。
[RequiredGuid(ErrorMessageResourceType = typeof(ClientOrderResources), ErrorMessageResourceName = "RequiredShippingMethod")]
public Guid ShippingMethodId
{
get { return GetProperty(ShippingMethodIdProperty); }
set { SetProperty(ShippingMethodIdProperty, value); }
}
最後に、 を使用して、ビュー内のそのプロパティの非表示の入力をレンダリングしていますHtml.HiddenFor
。
では、属性からエラー メッセージを取得して HTML に適用するにはどうすればよいでしょうか。リフレクションを使用して自分で行う必要がありますか、それともより良い方法がありますか?
そして、Html.HiddenFor
その情報を使用して必要な属性を HTML に追加するように指示するにはどうすればよいでしょうか?