2009-04-02 3 views
0

"Null이 아닌"속성을 가진 데이터베이스에 정수 유형 필드가 있습니다.ASP.NET MVC 뷰에서 정수 유형 필드의 null 값을 확인하는 방법은 무엇입니까?

&보기를 만들 때 입력란을 비워두면 0으로 간주되므로 다른 사람이 값 0을 입력하면 오류로 간주되므로 비교할 수 없습니다!

한 또 다른 문제는 스콧 번지 블로그 @ 책 "ASP.NET MVC 1.0"에 설명 된대로 내가 모델 오류를 사용하고 있다는 점이다. 그리고 (LINQ-To-SQL에 의해 생성 된) 객체의 부분 클래스에서 값을 검사하고 있습니다. 예 :

public partial class Person 
{ 
    public bool IsValid 
    { 
     get { return (GetRuleViolations().Count() == 0); } 
    } 
    public IEnumerable<RuleViolation> GetRuleViolations() 
    { 
     if (String.IsNullOrEmpty(Name)) 
      yield return new RuleViolation("Name is Required", "Name"); 
     if (Age == 0) 
      yield return new RuleViolation("Age is Required", "Age"); 
     yield break; 
    } 
    partial void OnValidate(ChangeAction action) 
    { 
     if (!IsValid) 
      throw new ApplicationException("Rule violations prevent saving"); 
    } 
} 

범위에도 문제가 있습니다. 난 그 범위는 그 때 "값 reguired된다"로 오류를 범 초과하는 경우 데이터베이스에 추천

제가 이제 C#에서 SMALLINT 즉 짧은 경우 선언.

그래서 마침내 ASP.NET MVC에서 유효성 검사를위한 최선의 방법이 있습니까? -1 시대의 기본값을 변경하는 방법은

답변

1

nullable 유형으로 코드를 변경할 수 있습니까?Utilities.GetNullableInt32(textbox1.Text.Trim());

Dim i As Nullable(Of Integer) 


    MsgBox(i.HasValue) 
    'result is false 

    i = 1 
    MsgBox(i.HasValue) 
    'result is true 

    i = Nothing 
    MsgBox(i.HasValue) 
    'result is false 
0

내가 MVC의 세부 사항과 속도까지 정말 아니지만,이 없다? 이 방법 당신은 확인하려면 값을 가지고 사람들은 여전히 ​​0

또 다른 해결책은 널 (NULL)의 INT를 사용할 수 입력 할 수 있습니다. 당신은? 유형에.

HTH.

조나단

+0

그러나 우리는 다음을 어떤 값을 입력 해달라고하면 0으로 간주하여 -1로 확인할 수 없습니다. – Vikas

+0

당신의 말을 듣지 못합니다. 기본값은 기본값입니다 (값이 설정되지 않을 때마다이 값을 가져야 함을 의미). null 입력 가능 유형을 나타내는 경우 아무 것도 설정되지 않은 경우 값은 null입니다. –

0

내가 먼저 클라이언트의 양식을 검증한다. 나이가 0 인 경우 유효 연령이 아니라는 것을 사용자에게 알립니다. 서버에서 메시지를 변경, 그것은 오해의 소지 :

if (Age == 0) 
    yield return new RuleViolation("0 years is not a valid age", "Age"); 

난 당신이 Person 엔티티에서 모델 속성에 바인딩하기 때문에 기본 값으로 0을 얻을 것을 알고있다 - 왜 당신이 데이터베이스에 다음 변경하지 마십시오 ? 새 엔티티에 대해 더 이상 0으로 표시되지 않도록 사용자 나이에 대해 합리적이라고 판단되는 값으로 데이터베이스의 기본값을 설정하십시오.

당신이 dB 값을 변경하지 않으려면

, 그것은로드 할 때 생성 페이지에서 문자열을 비워 텍스트 상자의 값을 설정 jQuery를 사용합니다. 사용자가 이러한 양식을 제출하려고 시도하면 클라이언트에서이를 허용하지 않도록 확인할 수 있으며 서버에서 아무 것도하지 않아도되므로 "값이 필요합니다"라는 메시지가 다시 나타납니다. 그런데

, 당신은 썼다 :

내가하지

이 오류로 간주됩니다 다음 값 0을 삽입 0 때문에 경우 다른 사람과 비교 할 수 없습니다 이 특정 도메인 모델의 문제를 참조하십시오. 0 살이 좋은 가치인지 아닌지 생각하십니까? 자신에게 물어.

0

검사를 u는이 GetNullableInt32() 기능을 선택하면 경우 사용자가 입력 한 값이 '0'이 테이블에 NUll로 저장됩니다

관련 문제