سؤال

هل هناك طريقة للحصول على النص ASP.NET لقبول القيم العملة الوحيدة، وعندما يتم التحقق من صحة السيطرة، اضافة الى وجود علامة $ مسبقا؟

والأمثلة على ذلك:

10.23 يصبح 10.23 $
$ 1.45 $ 1.45 يبقى
10.A يثير الخطأ الناتج عن عدم رقم صحيح

ولدي RegularExpressionValidator أن تتحقق من عدد صحيح، ولكن أنا لا أعرف كيف لإجبار علامة $ في النص. وأظن جافا سكريبت قد عمل، ولكن أتساءل عما إذا كان هناك طريقة أخرى للقيام بذلك.

هل كانت مفيدة؟

المحلول

MaskedEdit التحكم من في AJAX أدوات التحكم يمكن أن تنجز ما كنت طالبا.

نصائح أخرى

وأنا أعلم وقد تم بالفعل قبلت جوابا، ولكن أردت أن طرد حل آخر لأي شخص لديه نفس المشكلة والبحث عن الحلول متعددة.

والطريقة أفعل ذلك هو استخدام مسج تنسيق العملة المساعد لربط إدخال المستخدم على جانب العميل. تحليل هذه المدخلات على جانب الملقم يتطلب فقط:

// directive
using System.Globalization;

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

وسقوط الوحيد لهذا هو أن المستخدم يمكن أن يكون جافا سكريبت متوقف، وفي هذه الحالة المصادقة باستخدام التعابير المنطقية تشغيل من جانب الخادم ستعمل بمثابة الاحتياطي. إذا كان عنصر التحكم ربط بيانات، كل ما عليك القيام به هو decimalValue.ToString("{0:c}")، كما ذكر من قبل الآخرين، وذلك لعرض تنسيق العملة المناسب.

والشيء باردة حول هذا هو أنه إذا كان المستخدم بإدخال النص ويظهر $0.00 على جانب العميل، ومن جانب الخادم إذا بيان سيعود كاذبة. إذا كانت القيمة العشرية الخاص بك لا قيم الفارغة في قاعدة البيانات، مجرد تغيير decimal input = -1 إلى decimal input = 0 وسيكون لديك قيمة افتراضية 0.

وهناك طريقة أخرى للقيام بذلك قد يكون لوضع علامة الدولار خارج على يسار مربع النص. هل هناك حاجة حقيقية لديهم علامة الدولار داخل منطقة الجزاء أو ستفعل تسمية بسيطة؟

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); }

في ل.CS يمكن أن تفعله مباراة نمط على غرار،

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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top