2011-01-04 6 views
0

ich nach einem Weg suchen Index-Informationen zu speichern, wenn sie durch Elemente in einem ASP.net MVC 2 mit dem SPARK Ansicht Motor iterieren. Ich habe oft eine Teilansicht, die Elemente durchläuft und eine Schaltfläche, um neue Elemente hinzuzufügen.pflegen Indexwert mit Teilansichten in ASP.NET MVC2 SPARK mit

Ich möchte den Index nach dem Anzeigen der vorhandenen Elemente speichern und dann an die gleiche Teilansicht zurückgeben, um ein neues Element zu erstellen und anzuzeigen.

Zum Beispiel:

<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> 

Im Idealfall würde Ich mag den Index aus der AddRoom Schleife speichern und für den Button „ein Zimmer hinzufügen“ verwenden, die die AddRoom Ansicht wieder mit einem leeren Raum-Objekt aufruft.

Ich habe versucht, Javascript und SPARK-Variablen zu verwenden, aber ich kann nicht scheinen, eine nette Methode zu finden, dies zu tun. Irgendwelche Vorschläge?

Prost!

Antwort

0

Ich beantworte dies selbst mit der Methode, die ich verwendet habe, aber ich bin mir sicher, dass es noch bessere gibt.

Hier ist, was ich getan habe:

  1. eine Variable auf die Größe des Arrays in der View Zimmer gesetzt Javascript erstellen

    var roomIndex = $ {Model.FacilityRooms.Count};
  2. Increment diese Variable in der Funktion aktivieren Sie JavaScript, um die Add-Raum-Taste angebracht. Auf diese Weise wird der Index erhöht, wenn auf Add geklickt wird, wie es sein sollte.

    $('#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. Der Javascript anhängt den Index der URL der Schaltfläche Hinzufügen, so dass der Index wird in den Controller für die Schaltfläche Hinzufügen geben. Dann legen wir fest, dass es dem ViewData-Element "Index" zugewiesen wird, damit wir dieselbe Ansicht ohne Probleme verwenden können.

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

In der Ansicht brauchen wir nicht irgendetwas anderes (andere als die JavaScript-Variable Zugabe von 1 in #) zu ändern.

gibt es eine Art und Weise. Nicht sicher, ob es noch einen besseren Weg gibt.

Prost.

Verwandte Themen