У меня есть индекс моих элементов:
<h2>Index</h2>
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('button').click(function () {
$.post("Home/Swap", $("#log").serialize(), function (data) {
$("#log").load("Home/Index #log");
});
});
});
</script>
<form name="list" action="<%=Url.Action("Post", "Home")%>" method="post" id="log">
<% foreach (var k in Model) { %>
<input type="checkbox" id="ids" name="ids" value="<%=k.pos%>" /><%= k.pos %>. To jest numer: <%=k.name%><br />
<% } %>
</form>
<button>Swap</button>
и метод Swap:
public ActionResult Swap(int[] ids)
{
int pos1=ids[0];
int pos2=ids[1];
Element element1 = (from t in db.Elements
where t.pos == pos1
select t).Single();
Element element2 = (from t in db.Elements
where t.pos == pos2
select t).Single();
element1.pos = pos2;
element2.pos = pos1;
db.SaveChanges();
return Index();
}
Все отлично работает при первом обмене элементами.Но когда я заменяю его один раз, а затем пытаюсь поменять местами еще два, я получаю исключение:
System.NullReferenceException не обрабатывается кодом пользователя
Сообщение = Ссылка на объект не установлена на экземпляр объектаobject.
(исключение из метода Swap) Это проблема JQuery, я уверен.Я подозреваю эту строку $("#log").load("Home/Index #log");
- она показывает правильный результат, но не работает нормально, если я пытаюсь сделать это более одного раза.как это исправить?
edit: когда я обновляю страницу, она работает так же -> сначала работает хорошо, после получения исключения (первые затронутые элементы меняются местами после обновления)