Поддержание состояния динамически генерируемых флажков - PullRequest
1 голос
/ 08 марта 2010

Я использую jquery для динамического создания списка флажков. Однако, когда есть ошибка, мне нужно сохранить состояние флажков.

У меня это работает, но это выглядит немного глупо: получить значение из опубликованной формы, поместить его в viewstate, поместить значение var viewstate в скрытое поле, получить значение скрытого поля в js, разделите его на массив, итерируйте по массиву, сравнивая идентификаторы.

В моем контроллере:

  if (ModelState.IsValid)
  {
    ... stuff ...
  }
  else
  {
    ViewData["cbHack"] = Request.Form["cb_name"];
  }

На мой взгляд:

 <%= Html.Hidden("cbHack",ViewData["cbHack"]) %>

И JavaScript:

  $(document).ready(function() {
    $("#TriggerDDL option:selected").each(function() {
      $.getJSON('/controller/action/id', function(data, status) {
        var foo = '<p>';
        var selected = $('#cbHack').val().split(",");
        if (data.length > 0) {
          for (x in data) {
            var d = data[x];
            foo += "<input type='checkbox' name='cb_name' value='" + d.id + "'";
            for (var s in selected) {
              if (d.id == selected[s]) {
                foo += " checked ";
                $("#submit").removeAttr("disabled");
              }
            }
            foo += ">" + d.text;
            foo += "<br/>";
          }
          cb += "</p>";
          $("#DynFoo").html(foo);
        }
      });
    });
  });

Как это можно улучшить?

...