문제

ASP.NET TextBox가 통화 값 만 수락 할 수있는 방법이 있습니까? 컨트롤이 검증되면 미리 $ 부호를 삽입하십시오.

예 :

10.23은 $ 10.23가됩니다
$ 1.45는 $ 1.45를 유지합니다
10. 유효한 번호가되지 않아 오류가 발생합니다.

숫자가 유효하다는 것을 확인하는 regularexpressionvalidator가 있지만 텍스트에 $ 부호를 강제하는 방법을 모르겠습니다. 나는 JavaScript가 효과가 있다고 생각하지만, 이것을 할 또 다른 방법이 있는지 궁금했습니다.

도움이 되었습니까?

해결책

asp.net MASKEDEDIT 제어 AJAX 제어 툴킷 당신이 요구하는 것을 성취 할 수 있습니다.

다른 팁

답이 이미 받아 들여 졌다는 것을 알고 있지만 같은 문제가있는 사람을 위해 다른 솔루션을 버리고 여러 해결 방법을 찾고 싶었습니다.

내가하는 방법은 jQuery를 사용하는 것입니다 통화 플러그인 형식 클라이언트 측에서 사용자 입력을 바인딩합니다. 서버 측 에서이 입력을 구문 분석하면 다음과 같은 경우에만 있으면됩니다.

// directive
using System.Globalization;

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

이에 대한 유일한 몰락은 사용자가 JavaScript를 꺼질 수 있다는 것입니다.이 경우 Server-Side를 실행하는 Regex Validator가 낙상으로 작동합니다. 컨트롤이 데이터 라운드 인 경우 decimalValue.ToString("{0:c}") 다른 사람들이 언급 한 바와 같이, 적절한 통화 형식을 표시하기 위해.

이것에 대한 멋진 점은 사용자가 텍스트 상자에 들어가서 $0.00 클라이언트 측에서 서버 측 IF 문은 false를 반환합니다. 데이터베이스에서 소수점 값이 무일치 할 수없는 경우 변경하십시오. 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