Поддержание значения индекса с частичным представлением в ASP.NET MVC2 с использованием SPARK - PullRequest
0 голосов
/ 04 января 2011

Я ищу способ сохранить информацию индекса при переборе элементов в ASP.net MVC 2 с использованием механизма представления SPARK.У меня часто есть частичное представление, которое перебирает элементы, и кнопка для добавления новых элементов.

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

Например:

  <div class="small">Enter the rooms associated with this facility.</div>
  <div class="add">
    <div id="rooms">
      <AddRoom each="var roomModel in Model.FacilityRooms"
               RoomModel="roomModel" Index="roomModelIndex" />
    </div>
    <div class="add">
      <a id="addRoom" class="add" href="events/room/add.mvc">Add a room</a>
    </div>
  </div>
  <p>
    <input type="submit" value="Submit" />
  </p>
</form>

В идеале я хотел бы сохранить индекс из цикла AddRoom и использовать его для кнопки «Добавить комнату», которая снова вызывает представление AddRoom с пустым объектом комнаты.

Я пытался использовать Javascriptи SPARK переменные, но не могу найти хороший способ сделать это.Есть предложения?

Ура!

1 Ответ

0 голосов
/ 05 января 2011

Отвечая на это сам с помощью метода, который я использовал, но я уверен, что есть еще лучшие.

Вот что я сделал:

  1. Создание переменной Javascriptустановите размер массива Rooms в представлении

    var roomIndex = $ {Model.FacilityRooms.Count};
  2. Увеличьте значение этой переменной в функции Javascript, связанной с кнопкой «Добавить комнату».Таким образом, индекс увеличивается при каждом нажатии кнопки «Добавить», как и должно быть.

    $('#addRoom').click(function () {
    var a = $(this);
    a.addClass('loading');
    $.ajax({
        url: a.attr('href') + '?roomIndex=' + roomIndex++,
        cache: false,
        success: function (html) {
            $('#rooms').append(html);
            a.removeClass('loading');
        }
    });
    return false;
    

    });

  3. JavaScript добавляет индекс к URL-адресу кнопки «Добавить».Таким образом, индекс передается в контроллер для кнопки «Добавить».Затем мы устанавливаем его, чтобы назначить его элементу ViewData «Index», чтобы мы могли без проблем использовать то же представление.

    [HttpGet]
    public ViewResult Add(int roomIndex)
    {
        ViewData["RoomModel"] = new EditFacilityRoomDto();
        ViewData["Index"] = roomIndex;
        return View();
    
    
    }
    

В представлении нам не нужно изменятьчто-нибудь еще (кроме добавления переменной JavaScript в # 1).

Есть один способ.Не уверен, что есть другой лучший способ.

Приветствия.

...