2011-01-04 3 views
0

SPARK 뷰 엔진을 사용하여 ASP.net MVC 2의 항목을 반복 할 때 인덱스 정보를 저장하는 방법을 찾고 있습니다. 자주 항목을 반복하는 부분 뷰와 새 항목을 추가하는 단추가 있습니다.SPARK를 사용하여 ASP.NET MVC2에서 부분 뷰로 인덱스 값 유지하기

기존 항목을 표시 한 후 색인을 저장 한 다음 동일한 부분보기로 다시 전달하여 새 항목을 만들고 표시하려고합니다. 예를 들어

:

<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 변수를 사용해 보았지만 좋은 방법을 찾을 수 없습니다. 어떤 제안?

건배!

답변

0

내가 사용했던 방법으로이 문제에 대한 답을 찾았으나 여전히 더 좋은 방법이 있다고 확신합니다. 여기

내가 무슨 짓을했는지 :

  1. 뷰의 방 배열의 크기로 설정 자바 스크립트 변수를 만듭니다

    VAR roomIndex = $ {Model.FacilityRooms.Count};
  2. 룸 추가 버튼에 첨부 된 자바 스크립트 기능에서이 변수를 증가시킵니다. 이 방법은 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. 자바 스크립트는 추가 버튼의 URL에 색인을 추가하므로 색인이 추가 버튼의 컨트롤러로 전달됩니다. 그런 다음 동일한 뷰를 아무 문제없이 사용할 수 있도록 인덱스 "ViewData"요소에 할당하도록 설정합니다. 우리가 (# 1에서 자바 스크립트 변수를 추가하는 것보다 다른) 무엇을 변경할 필요가 없습니다보기에서

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


} 

.

한 가지 방법이 있습니다. 다른 더 좋은 방법이 있는지 확실하지 않습니다.

건배.

관련 문제