使用SPARK在ASP.NET MVC2中使用部分视图维护索引值

时间:2011-01-04 18:00:55

标签: asp.net-mvc spark-view-engine

我正在寻找一种在使用SPARK视图引擎迭代ASP.net MVC 2中的项目时保存索引信息的方法。我经常有一个部分视图,它遍历项目和一个按钮来添加新项目。

我希望在显示现有项目后保存索引,然后将其传递回相同的局部视图以创建和显示新项目。

例如:

  <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 :(得分:0)

用我使用的方法自己回答,但我确信还有更好的方法。

这就是我的所作所为:

  1. 创建一个Javascript变量,设置为View

    中Rooms数组的大小   var roomIndex = $ {Model.FacilityRooms.Count};
  2. 在附加到“添加房间”按钮的Javascript函数中增加此变量。这样,只要点击了Add,索引就会递增。

    $('#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,因此索引将传递到“添加”按钮的控制器中。然后我们将其设置为“Index”元素,以便我们可以使用相同的视图而不会出现任何问题。

    [HttpGet]
    public ViewResult Add(int roomIndex)
    {
        ViewData["RoomModel"] = new EditFacilityRoomDto();
        ViewData["Index"] = roomIndex;
        return View();
    
    
    }
    
  4. 在视图中我们不需要更改任何其他内容(除了在#1中添加JavaScript变量)。

    有一种方法。不确定是否还有其他更好的方式。

    干杯。