Я очень новичок в веб-разработке (около месяца) и столкнулся с чем-то странным.
Я использую VS2010, MVC 3 Razor для создания простого приложения.
У меня есть две таблицы, содержащие информацию одного типа. Как в таблице A, так и в таблице B содержатся пользователи. Разница в том, что в таблице A есть пользователи, которые находятся в «Роли», а в таблице B содержатся пользователи, не входящие в «Роль».
Обе таблицы имеют два столбца, один с именем пользователя, а другой содержит Ajax.ActionLink.
Итак, чтобы добавить пользователя в таблицу «B», я нажимаю «Ajax.Actionlink» в таблице «A». «Добавить» сохраняется с помощью действия MVC, и я перемещаю строку таблицы, используя событие AjaxOption OnSuccess. По сути, событие OnSuccess перемещает строку и изменяет Ajax.ActionLink, поэтому ActionLink новой добавленной строки пользователя будет удалять пользователя.
Надеюсь, это понятно.
Это все отлично работает. Я могу добавить пользователя «А» в таблицу «А», и все работает отлично. Я могу удалить пользователя "A" из таблицы "A" в таблицу "B", и все в порядке. Но я не могу повторно добавить пользователя А в таблицу «А». OnSuccess запускается, поэтому строка перемещается, но событие Action не вызывается. Так что, если я обновлю экран, я смогу увидеть, что движение фактически не произошло. это то же самое, если я начну с пользователя "B" в таблице "B". Кроме того, обновление страницы (F5) не исправляет ссылки, они остаются неработающими, пока я не закрою и снова не открою страницу.
В HTML все выглядит хорошо, в строке состояния видно, что при нажатии на ссылку вызывается правильный href, но fiddler не регистрирует вызов и действие не вызывается.
Я подозреваю, что у меня есть какие-то проблемы со связыванием, но я здесь потерян. В Firefox все отлично работает
Пожалуйста, помогите. Код ниже, с добавлением комментариев. Помните, что это работает для добавления и удаления, удаления и добавления, но повторное добавление и повторное удаление только вызывает функцию, но не вызывает действие. Так что я знаю, что действия написаны правильно и т. Д.
//// element is the ID of the element i am Moving
//// targetElement is the ID of the tbody i am moving the element to
function move_element(element, targetElement) {
try
{
//// get the HTM
var elementHTML = $("tr[id=" + element + "]").children(".Action").html();
//// based on the tbody id
switch (targetElement)
{
case "AssignedToGroup":
//// Change the target body for next call to this function
elementHTML = elementHTML.replace("AssignedToGroup", "UnassignedToGroup");
//// change th action name
elementHTML = elementHTML.replace("AddGroupRole", "DeleteGroupRole");
//// change the display label
elementHTML = elementHTML.replace("Assign", "Remove");
break;
case "UnassignedToGroup":
elementHTML = elementHTML.replace("UnassignedToGroup", "AssignedToGroup");
elementHTML = elementHTML.replace("DeleteGroupRole", "AddGroupRole");
elementHTML = elementHTML.replace("Remove", "Assign");
break;
}
//// Create the new Ajax <td> element
$("tr[id=" + element + "]").children(".Action").replaceWith("<td class='Action'>" + elementHTML + "</td>")
//// Add the row to the other body
$("tr[id=" + element + "]").appendTo($("tbody[id=" + targetElement + "]"));
}
catch (e)
{
alert(e.Message); ////NO ERROR IS RAISED
}
}