7

MVC2 애플리케이션에서 작업 중입니다.asp.net mvc와 쉼표로 구분 된 숫자

데이터 주석을 사용하여 데이터 유효성을 검사합니다 (클라이언트 측과 서버 측). 내 모델에는 십진수 값만 허용하는 필드가 여러 개 있습니다. 사용자가 십진수 값을 입력하자마자 쉼표로 분리되어보다 읽기 쉬운 형식으로 변환되기를 원합니다. 예를 들어, 1200은 그대로 유지해야하며 1200은 1,200으로 형식화해야합니다.

여기 내 모델 :

public virtual GrossFee? Fee { get; set; } 

그리고 여기가보기에 어떻게이에 대한

%: Html.TextBoxFor(model => model.GrossFee)%> 

어떤 아이디어가 높게 평가 될 것입니다.

감사합니다.

+1

도움이 될 것입니다 순수 클라이언트 사이드 체크 아웃이 대답은 : http://stackoverflow.com/questions/1990512/add-comma-to-numbers-every-three-digits-using-jquery –

답변

9

대신 tostring 내에서 형식을 사용할 수 있어야합니다 :

모델 :

(나는 무엇이 GrossFee?인지는 모르지만 10 진수로 가정합니다)

[DisplayFormat(DataFormatString = "{0:0,0}")] 
public virtual Decimal? Fee { get; set; } 

보기 :

Html.EditorFor(model => model.GrossFee) 

또한 특정 응용 프로그램에 맞게 대해 HTMLEncode 및 ApplyFormatInEditMode을 조정할 필요가있다.

텍스트 상자 내용을 쉼표로 그룹화 된 숫자로 변환하는 모든 것은 (즉, 포스트 백 앞에) 자바 스크립트 기반이어야합니다. 쉼표와 숫자 값을 표시하고자하는 경우

+0

제안 해 주셔서 감사합니다. 나는 당신이 언급 한 것처럼 노력했고 내가 원하는 방식으로 총 수수료의 가치를 보여줍니다. [DisplayFormat (DataFormatString = "{0 : 0,0}", ApplyFormatInEditMode = true, HtmlEncode = true)]공개 소수 GrossFee {get; 세트; } 그러나 양식이 자체적으로 다시 태어 났을 때 ModelState.IsValid는 false이며 총 요금의 값이 올바른 형식이 아님을 불평합니다. BTW 나는 클라이언트 쪽 유효성 검사를 설정하고 각 필드에 대해 ValidateMessageFor 컨트롤이 있습니다. 엄청 고마워. – user629161

+0

아마도 값에 쉼표가 있고 유효성 검사기에서 직선 번호를 예상하기 때문일 수 있습니다.쉼표가 중요한 경우 사용자 정의 유효성 검사기를 고려하거나 양식 게시에 보내기 전에 해당 유효성 검사기를 제거해야합니다. –

+2

다음은 쉼표로 결합 소수점을 모델링하는 "공식"솔루션입니다. http://haacked.com/archive/2011/03/19/fixing-binding-to-decimals.aspx – Ryan

0

당신은 Html.TextBoxFor이 같은 데이터 주석을 존중 Html.EditorFor을 사용하고 뷰를 가질 수의

var foo = 1200.2; 
var bob = foo.ToString("#,###.00##"); 
+0

나는 그것이 클라이언트 측에서 동적으로 그렇게하기를 원한다면 텍스트에 1200을 입력합니다. 상자가 나타나고 텍스트 상자의 포커스가 없어지면 문자열의 형식을 "#, ###. ##"로 지정해야합니다. – user629161

3
[DisplayFormat(DataFormatString = "{0:n}")] 
public virtual GrossFee? Fee { get; set; } 

희망이 당신에게 대신 위의 라인의

4
drPastDateDetail[strMS] = decValue.ToString(); 

을 도울 수, 다음 코드는 당신이 -

String Test = String.Format("{0:#,#.##}",decValue); 
drPastDateDetail[strMS]=Test; 
관련 문제