ASP.NET TextBox에 $ 부호가있는 통화를 표시하도록 강요합니다
-
03-07-2019 - |
문제
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
}