2010-12-27 5 views
0

Motive: Ich habe eine Dezimalzahl Eigenschaft in einer Klasse, die ich so validieren will, dass es iRegexValidator-Attribut (Microsoft.Practices.EnterpriseLibrary.Validation.Validators) auf einen Dezimaltyp anwenden?

Also regex haftet "{1,7} \ d {2,7} $^\ d." die Regex-Validator-Attribut auf die Eigenschaft ich habe eine Textbox Validierung dieser Objekttyp angelegt haben

[RegexValidator(@"^\d{1,7}\.\d{2,7}$"...)] 
    public Decimal MyDecimalProperty { get; set; } 

Dann über propertyproxyvalidator auf meiner asp.net Seite gebunden.

<cc1:PropertyProxyValidator ID="MyValidator" runat="server" ControlToValidate="MyTextBox" 
PropertyName="MyDecimalProperty" SourceTypeName="Myclass, Mydll"></cc1:PropertyProxyValidator> 

Zur Laufzeit bekomme ich diesen Fehler, wenn die Überprüfung durchgeführt wird:

„Wert ist zu validieren nicht der erwarteten Typ. Erwartet System.String bekam aber System.Decimal statt“

Irgendeine Idee, wie man dieses Problem umgehen kann, oder eine Alternative, um mein Motiv zu erreichen?

Antwort

0

Reguläre Ausdrücke sind so aufgebaut, dass sie an Strings arbeiten, nicht an numerischen Typen. Vielleicht brauchen Sie so etwas wie dieses stattdessen:

public Decimal MyDecimalProperty { get; set; } 

[RegexValidator(@"^\d{1,7}\.\d{2,7}$")] 
public string MyDecimalPropertyString 
{ 
    get 
    { 
     return this.MyDecimalProperty.ToString(); 
    } 
} 

auch, aktualisieren Sie die PropertyName Attribut des PropertyProxyValidator.

+0

Ja, das ist mein letzter Ausweg. Ich habe überlegt, ob es einen Weg geben könnte, einen Typwandler zu installieren :( – mishal153

+0

Danke, dass Sie sich für diese Unterordnung entschieden haben – mishal153

Verwandte Themen