Как избежать пустых строк при привязке данных JSON на стороне клиента - PullRequest
5 голосов
/ 23 июня 2009

Можно ли избежать связывания строк NULL на клиенте при привязке данных JSON к пользовательскому интерфейсу HTML?

Я использую ASP.NET MVC + jQuery + jTemplates . Данные поступают из классов linq-to-sql, и у этих классов довольно много обнуляемых свойств. Когда такие свойства сериализуются и передаются обратно клиенту, я получаю такой JSON:

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

Когда я связываю эти данные с HTML, у меня много строк 'NULL'. Я пробовал как ручное связывание, так и шаблоны JavaScript (jTemplate). Результаты одинаковы. В настоящее время я имею дело с этой проблемой, 'объединяя' нулевые значения следующим образом:

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

Но я не хочу делать это вручную.

Пожалуйста, совет, если я:

  1. Может автоматически преобразовывать обнуляемые свойства в пустые строки путем настройки процесса сериализации или выбора стороннего сериализатора JSON вместо .NET JSON serializer.
  2. Может делать что-либо на стороне клиента, например, обходить это с помощью jQuery или шаблонизаторов.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 01 декабря 2009

Вы можете изменить jtemplate так, чтобы он возвращал пустую строку вместо нуля, изменив следующую строку кода в jquery.jtemplate.js.

Сначала найдите эту функцию

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

Оченьследующий блок кода - это оператор if

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

Измените его на

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

И это должно сделать

2 голосов
/ 26 июня 2009

Вы можете настроить пользовательскую сериализацию (см.

Как реализовать пользовательскую сериализацию JSON из веб-службы ASP.NET? )

Вы также можете создать собственную версию val, которая преобразует ноль в пустую строку. Тем не менее, я думаю, что метод, который вы используете в настоящее время, вероятно, лучше в любом случае - общие методы могут добавить много сложности и, возможно, скрытых ошибок.

1 голос
/ 23 июня 2009

Я склонен спрашивать себя, в какой момент данные неверны? Неверно ли говорить, что TypeId имеет значение null (неизвестно, не назначено), когда ему должно быть специально назначено '' (пустая строка)?

В этом случае я бы не догадался, что неправильно в том, как презентация отображает «ноль», вы хотите просто пустое текстовое поле или что-то подобное. В этом случае проблема представления данных заключается в преобразовании данных в представление, которое является приемлемым, и это его работа. Следовательно, ваше использование «слияния» кажется мне правильным.

Конечно, это, возможно, слишком строгое толкование и может быть не таким прагматичным, как хотелось бы. В долгосрочной перспективе, хотя (я имею в виду в течение всего времени существования кода) обычно лучше держать вещи настолько корректными, насколько это возможно на практике.

0 голосов
/ 27 января 2012

Только для jTemplates. Вот что я сделал:

{#if $T.mylist.nullableProperty != null}{$T.myList.nullableProperty}{#/if}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...