将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||'');
但我不想手动完成。
请告知我:
谢谢。
答案 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}