2009-06-23 3 views
5

JSON 데이터를 HTML UI에 바인딩 할 때 클라이언트에 'NULL'이 표시되는 것을 피할 수 있습니까?클라이언트 측에서 JSON 데이터를 바인딩 할 때 'null'문자열을 피하는 방법

ASP.NET MVC + jQuery + jTemplates을 사용하고 있습니다. 데이터는 linq-to-SQL 클래스에서 가져오고 있으며이 클래스에는 nullable 속성이 많이 있습니다. 이러한 특성은 직렬화 얻을 나는 그런 JSON와 끝까지 다시 클라이언트로 전송하는 경우 :

[{"Id":1,"SuitId":1,"TypeId":null,"Type":null,"CourtId":null,"Court":null}] 

유장은 내가 'NULL'문자열을 많이 가지고 HTML이 데이터를 바인딩합니다. 수동 바인딩과 자바 스크립트 템플릿 엔진 (jTemplate)을 모두 시도했습니다. 결과는 같습니다. 다음과 같이 현재 나는 '병합'널 값으로이 문제를 다루고있어 :

$('#Elem').val(someVar||''); 

을하지만 수동으로 할 싶지 않아요.

나는 경우 조언을 주시기 바랍니다 :

  1. 자동으로 하나가 직렬화 프로세스를 조정 또는 어쩌면 .NET JSON 시리얼 라이저를 통해 제 3 자 JSON 시리얼 라이저를 선택하여 문자열을 비워 Null 허용 속성을 변환 할 수 있습니다.
  2. 클라이언트 측에서는 jQuery 또는 템플릿 엔진을 사용하여 작업 할 수 있습니다.

감사합니다.

답변

2

당신은 사용자 정의 직렬화를 설정할 수 있습니다 (참조

How to implement custom JSON serialization from ASP.NET web service?)

또한 빈 문자열로 널 (null)로 변환 발의 자신의 버전을 만들 수 있습니다. 그러나, 나는 현재 사용하고있는 방법이 어쨌든 더 좋다고 생각한다. 일반적인 방법은 많은 복잡성과 숨겨진 버그를 추가 할 수있다.

1

데이터가 부정확 한 시점을 스스로 묻는 경향이 있습니까? TypeId가 특별히 ''(빈 문자열)로 지정되어야 할 때 TypeId가 null (알 수 없음, 할당되지 않음)이라고 말하는 것이 맞습니까?

이 경우 나는 프리젠 테이션이 "null"로 표시되는 방식이 올바르지 않다고 생각할 것입니다. 단순히 빈 텍스트 상자 나 그런 것을 원할 것입니다. 이 경우 데이터를 허용 가능한보기로 변환하는 프리젠 테이션 문제가 있습니다. 그러므로 당신의 "유착"의 사용은 나에게 맞는 것처럼 보인다.

물론 지나치게 엄격한 해석 일 수도 있고 실용적이지 않을 수도 있습니다. 장기적으로 (코드의 수명이 다되었음을 의미하는) 일반적으로 일과성을 유지할 수있는 최선의 방법을 사용하는 것이 가장 좋습니다.

3

jquery.jtemplate.js의 코드 라인을 수정하여 jtemplate을 수정하여 null 대신 빈 문자열을 반환 할 수 있습니다.이 기능을 찾을 수

먼저

코드의 바로 다음 블록은
TemplateUtils.cloneData = function(d, filter, f_escapeString) { 

if 문

if (d == null) { 
    return d; 
} 

if (d == null) { 
    return ""; 
} 

에 그 수정 그리고 그것을

+0

멋진 작품, 매우 영리합니다. 나에게 많은 노력을 아끼지 않았다. – Gregory

0
을해야하는 경우

j 템플릿의 경우, 이것은 내가 한 것입니다.

{#if $T.mylist.nullableProperty != null}{$T.myList.nullableProperty}{#/if} 
관련 문제