2013-05-13 5 views
2

유형이 string 인 모델이 있습니다. 이 모델을 바인딩 (면도보기)하고이 속성을 숨겨진 필드에 바인딩합니다. 속성 값이 비어 있습니다 (String.Empty). 내가 컨트롤러 모델을 게시 할 때빈칸보기에서 공백이 null로 변환됩니다. C#

, 내가 무엇을 얻을 값은 null 대신 비어 있습니다.

아이디어가 있으십니까?

+0

사용합니다. strSomething.ToString()은 문자열 "strSomething"과 값 "strSomething.ToString()"을 사용하면 간단하게 처리 할 수 ​​있지만 문자열에 null 값이 있으면 작동하지 않습니다. –

답변

1

왕복 수술에 대한 null 값을 빈 문자열로 유지하려고하면 null을 나타내는 특수 상수 문자열 값을 정의 할 수 있습니다. (그래서 당신은 그것의 연장을 할 수 있습니다) 정적 클래스에서이 같은 아마 뭔가 : 모델에 숨겨진 문자열 속성을 설정할 때 한 후 숨겨진 값을 다시 읽을 때

private const string NULL_STRING = "[email protected]@__"; 

public static string StringifyIfNull(this string s) { 
    return s == null ? NULL_STRING : s; 
} 

public static string DestringifyIfNull(this string s) { 
    return NULL_STRING == s ? null : s; 
} 

그래서, hiddenString.StringifyIfNull()을 사용하고, 게시물은 원인은 조금 복잡하다 model.HiddenString.DestringifyIfNull()

+0

그것은 효과가 있었다. 방금 조건을 변경해야했습니다. Stringify하려면 s == ""를 반환 하시겠습니까? NULL_STRING : s; Destringify하려면 s == NULL_STRING을 반환 하시겠습니까? "": s; –

1

는 컨트롤러 매개 변수 요청 데이터를 매핑하고, 요청 데이터가 빈 값 때 MVC 프레임 워크가하는 일 즉. Request.Form 컬렉션의 값을 확인하면 실제로 null 값이 아닌 빈 문자열임을 알 수 있습니다.

당신은 프레임 워크가 생성하는 null 값을 처리하거나 Request.Form 컬렉션에서 데이터를 읽을 수 있습니다.

관련 문제