在客户端绑定JSON数据时如何避免'null'字符串

时间:2009-06-23 07:27:58

标签: javascript jquery asp.net-mvc json

将JSON数据绑定到HTML UI时,是否可以避免在客户端上出现'NULL'?

我正在使用ASP.NET MVC + jQuery + jTemplates。数据来自linq-to-sql类,这些类具有相当多的可空属性。当这些属性被序列化并转移回客户端时,我最终得到了这样的JSON:

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

Whey我将这些数据绑定到HTML我有很多'NULL'字符串。我尝试了手动绑定和JavaScript模板引擎(jTemplate)。结果是一样的。 目前我通过'合并'空值来处理这个问题,如下所示:

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

但我不想手动完成。

请告知我:

  1. 可以通过调整序列化过程或者通过.NET JSON序列化程序选择第三方JSON序列化程序,自动将可空属性转换为空字符串。
  2. 可以在客户端执行任何操作,例如使用jQuery或模板引擎解决此问题。
  3. 谢谢。

4 个答案:

答案 0 :(得分:3)

您可以通过修改jquery.jtemplate.js中的以下代码行来修改jtemplate以返回空字符串而不是null。

首先找到这个功能

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

下一个代码块是if语句

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

将其修改为

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

那应该这样做

答案 1 :(得分:2)

您可以设置自定义序列化(请参阅

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

您还可以创建自己的val版本,将null转换为空字符串。但是,我认为您当前使用的方法可能更好 - 泛型方法可能会增加很多复杂性并可能隐藏错误。

答案 2 :(得分:1)

我倾向于问自己,数据在什么时候不正确?如果TypeId应该特别指定''(空字符串),那么TypeId是否为空(未知,未分配)是不正确的?

在这种情况下,我猜不会,表示显示“null”的方式不正确,您只需要一个空文本框或某些此类内容。在这种情况下,它的演示问题是将数据转换为可接受的视图,这就是它的工作。因此,你对“合并”的使用对我来说似乎是正确的。

当然,这可能是一种过于严格的解释,可能并不像你想的那样务实。从长远来看(我的意思是代码的生命周期),通常最好保持事情的正确性。

答案 3 :(得分:0)

仅限jTemplates,这就是我所做的:

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