Frage

Gibt es einen Weg, um eine ASP.NET textbox akzeptieren nur Währungszeichen, und, wenn das Steuerelement validiert wird, legen Sie ein $ - Zeichen vorher?

Beispiele:

10.23 wird $10.23
$1.45-Aufenthalte $1.45
10.einer wirft Fehler wegen nicht eine gültige Nummer

Ich habe ein RegularExpressionValidator, die überprüfung der Anzahl ist gültig, aber ich weiß nicht, wie zu zwingen, die $ - Zeichen in den text.Ich vermute JavaScript funktionieren könnte, aber Frage mich, ob es einen anderen Weg, dies zu tun.

War es hilfreich?

Lösung

Die ASP.NET MaskedEdit Kontrolle der AJAX Control Toolkit können erreichen, was Sie fordern.

Andere Tipps

Ich weiß, eine Antwort bereits akzeptiert wurde, aber ich wollte zu werfen, eine andere Lösung für irgendjemand mit dem gleichen problem und suchen für mehrere Problemumgehungen.

Die Art, wie ich dies tun, ist die Verwendung von jQuery format Währung plugin binden von Benutzereingaben auf der Clientseite.Parsen von diesem Eingang auf der server-Seite nur benötigt:

// directive
using System.Globalization;

// code
decimal input = -1;
if (decimal.TryParse(txtUserInput.Text, NumberStyles.Currency, 
    CultureInfo.InvariantCulture, out input))
{
    parameter = input.ToString();
}

Der einzige Nachteil ist, dass die Benutzer können haben javascript ausgeschaltet, in welchem Fall die RegEx-validator läuft auf server-Seite funktionieren würde, wie eine fall-back.Wenn das Steuerelement Datenbindung, alle Sie haben zu tun ist decimalValue.ToString("{0:c}") wie von anderen erwähnt, um die richtige Währung zu formatieren.

Die kühle Sache über dieses ist, dass, wenn der Benutzer das Textfeld, und es zeigt $0.00 auf der client-Seite, server-side-if-Anweisung würde false zurückgeben.Wenn Ihre decimal-Wert ist nicht null-Werte zulässt, die in der Datenbank ändern decimal input = -1 zu decimal input = 0 und Sie haben eine Standard-Wert 0.

Eine andere Möglichkeit, dies zu tun sein könnte, die Dollar-Zeichen außerhalb auf der linken Seite neben dem Textfeld zu platzieren. Gibt es einen echten Bedarf das Dollarzeichen im Innern der Box zu haben oder ein einfaches Etikett zu tun?

decimal sValue = decimal.Parse(txtboxValue.Text.Trim());
// Put Code to check whether the $ sign already exist or not.
//Try making a function returning boolean
//if Dollar sign not available do this
{ string LableText = string.Format("{0:c}", sValue); }
else
{ string LableText = Convert.ToString(sValue); }
string sValue = Convert.ToString(txtboxValue.Text.Trim());
// Put Code to check whether the $ sign already exist or not.
//Try making a function returning boolean
//if Dollar sign not available do this
{ string LableText = string.Format("{0:c}", "sValue"); }
else
{ string LableText = Convert.ToString(sValue); }

In den .CS Sie könnten nach dem Vorbild der, ein Muster übereinstimmen

string value = text_box_to_validate.Text;

string myPattern = @"^\$(\d{1,3},?(\d{3},?)*\d{3}(\.\d{0,2})|\d{1,3}(\.\d{2})|\.\d{2})$";
Regex r = new Regex(myPattern);
Match m = r.Match(value);

if (m.Success)
{
    //do something -- everything passed
}
else
{
    //did not match
    //could check if number is good, but is just missing $ in front
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top