2011-01-04 9 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. ビューの客室配列のサイズに設定するJavaScript変数を作成します

    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に追加するので、インデックスが追加ボタンのコントローラに渡されます。次に、同じビューを問題なく使用できるように、このビューを「Index」ViewData要素に割り当てるように設定します。我々は(#1でJavaScript変数を追加すること以外の)他の何かを変更する必要はありませんビューで

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

1つの方法があります。別のより良い方法があるかどうかはわかりません。

乾杯。

関連する問題