我正在寻找一种在使用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变量,但似乎无法找到一个很好的方法。有什么建议吗?
干杯!
答案 0 :(得分:0)
用我使用的方法自己回答,但我确信还有更好的方法。
这就是我的所作所为:
创建一个Javascript变量,设置为View
中Rooms数组的大小 var roomIndex = $ {Model.FacilityRooms.Count};在附加到“添加房间”按钮的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;
});
javascript将索引附加到“添加”按钮的URL,因此索引将传递到“添加”按钮的控制器中。然后我们将其设置为“Index”元素,以便我们可以使用相同的视图而不会出现任何问题。
[HttpGet]
public ViewResult Add(int roomIndex)
{
ViewData["RoomModel"] = new EditFacilityRoomDto();
ViewData["Index"] = roomIndex;
return View();
}
在视图中我们不需要更改任何其他内容(除了在#1中添加JavaScript变量)。
有一种方法。不确定是否还有其他更好的方式。
干杯。