2011-10-28 10 views
4

MVC 3 with .NETのbooleanプロパティには、どのようにしてTrueという値を必要としますか?私はどこ これは、それはここで有効なMVC .netプロパティの必須属性のブール値

<Required()> _ 
<DisplayName("Agreement Accepted")> _ 
Public Property AcceptAgreement As Boolean 

ないリンクがいつか

Public Class BooleanMustBeTrueAttribute Inherits ValidationAttribute 

    Public Overrides Function IsValid(ByVal propertyValue As Object) As Boolean 
     Return propertyValue IsNot Nothing AndAlso TypeOf propertyValue Is Boolean AndAlso CBool(propertyValue) 
    End Function 

End Class 

追加このクラスを追加死ぬ場合の修正ですothewise、私はTrueする値を必要とします属性

<Required()> _ 
<DisplayName("Agreement Accepted")> _ 
<BooleanMustBeTrue(ErrorMessage:="You must agree to the terms and conditions")> _ 
Public Property AcceptAgreement As Boolean 
+0

私はこれが古かったと知っていますが、答えとしてソリューションを追加すると、私はupvote :) – JMK

答えて

4

jqueryの追加に興味のある人は、検証(チェックボックスが両方のブラウザとサーバで検証されるように)あなたがそうのようなBooleanMustBeTrueAttributeクラスを変更する必要があります。

public class BooleanMustBeTrueAttribute : ValidationAttribute, IClientValidatable 
{ 
    public override bool IsValid(object propertyValue) 
    { 
     return propertyValue != null 
      && propertyValue is bool 
      && (bool)propertyValue; 
    } 

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 
    { 
     yield return new ModelClientValidationRule 
     { 
      ErrorMessage = this.ErrorMessage, 
      ValidationType = "mustbetrue" 
     }; 
    } 
} 

は基本的に、クラスは今もIClientValidatableを実装し、対応するJSエラーメッセージと返しますHTMLフィールド( "mustbetrue")に追加されるjquery検証属性。

さて、jqueryの検証は、作業のページへ次のJSを追加するために:

jQuery.validator.addMethod('mustBeTrue', function (value) { 
    return value; // We don't need to check anything else, as we want the value to be true. 
}, ''); 

// and an unobtrusive adapter 
jQuery.validator.unobtrusive.adapters.add('mustbetrue', {}, function (options) { 
    options.rules['mustBeTrue'] = true; 
    options.messages['mustBeTrue'] = options.message; 
}); 

注: - >Perform client side validation for custom attribute

私はこの回答で使用されるもので、以前のコードをベース

そして、それは基本的にはこれだけです:)

仕事をする前のJSのために、あなたがページに次のjsファイルが含まれている必要があることを忘れないでください:

P.S.それを動作させたら、Scriptsフォルダのjsファイルにコードを追加し、すべてのjsファイルを含むバンドルを作成することをお勧めします。

関連する問題