2009-06-23 7 views
5

E 'possibile evitare di avere le punture 'Null' sul client quando l'associazione di dati JSON in HTML UI?come evitare le stringhe 'Null', quando l'associazione di dati JSON sul lato client

sto usando ASP.NET MVC + jQuery + jTemplates. I dati provengono da classi linq-to-sql e queste classi hanno un sacco di proprietà nullable. Quando tali proprietà ottenere serializzato e ritrasferiti client io alla fine con tanta JSON:

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

siero di latte che legano questi dati per HTML ho un sacco di stringhe 'null'. Ho provato sia il binding manuale che i motori di template JavaScript (jTemplate). I risultati sono gli stessi. Attualmente ho a che fare con questo problema da 'coalescenza dei valori nulli come segue:

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

Ma io non voglio farlo manualmente.

Si prega di consulenza se:

  1. in grado di tradurre automaticamente le proprietà nullable svuotare stringhe o modificando il processo di serializzazione o forse la scelta della 3a parte JSON serializzatore su .NET JSON serializzatore.
  2. Può fare qualsiasi cosa sul lato client, come ad esempio aggirare questo con motori jQuery o modelli.

Grazie.

risposta

2

È possibile impostare la serializzazione personalizzata (vedi

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

Si potrebbe anche fare la propria versione di val nulla che converte una stringa vuota. Tuttavia, penso che il metodo che stai usando sia probabilmente migliore in ogni caso - i metodi generici potrebbero aggiungere molta complessità e possibili bug nascosti.

1

Tendo a chiedermi a che punto i dati sono errati? È errato affermare che TypeId è null (sconosciuto, non assegnato) quando dovrebbe essere assegnato in modo specifico '' (stringa vuota)?

In questo caso direi no, qual è corretto che il modo in cui la presentazione visualizza "nullo", si vuole semplicemente una casella di testo vuota o qualcosa del genere. In questo caso è il problema delle presentazioni per convertire i dati in una vista accettabile, questo è il suo lavoro. Quindi il tuo uso della "coalescenza" mi sembra corretto.

Naturalmente thats forse un'interpretazione troppo rigida e non può essere, come pragmatica come si vorrebbe. A lungo termine però (intendo per tutta la durata del codice) di solito è meglio mantenere le cose corrette come possono essere praticamente.

3

È possibile modificare jtemplate per restituire una stringa vuota invece di null modificando la seguente riga di codice nel jquery.jtemplate.js.

In primo luogo trovare questa funzione

TemplateUtils.cloneData = function(d, filter, f_escapeString) { 

Il successivo blocco di codice è un'istruzione if

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

Modifica che per

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

e che dovrebbe farlo

+0

Bel lavoro, molto intelligente. Mi ha salvato un grande sforzo. – Gregory

0

Solo per jTemplates, questo è quello che ho fatto:

{#if $T.mylist.nullableProperty != null}{$T.myList.nullableProperty}{#/if} 
Problemi correlati