我對web開發(約一個月)非常陌生,我遇到了一些奇怪的事情。MVC 3 Razor動態添加Ajax.Action鏈接只在IE8中第一次工作
我使用VS2010,MVC 3 Razor來創建一個簡單的應用程序。
我有兩個表保存相同類型的信息。正如在表A和表B中持有用戶一樣。區別在於,表A具有處於「角色」中的用戶,而表B具有不在「角色」中的用戶。
兩個表都有兩列,一列用戶名,另一列包含Ajax.ActionLink。
因此,要將用戶添加到表格「B」,我單擊表格「A」上的「Ajax.Actionlink」。通過MVC動作保存「添加」,並使用AjaxOption OnSuccess事件移動表格行。 OnSuccess事件基本上會移動行,並更改Ajax.ActionLink,以便新添加的用戶行的ActionLink將刪除用戶。
我希望這很清楚。
這一切工作正常。我可以將用戶「A」添加到表「A」,並且一切正常。我可以從表「A」中刪除用戶「A」到表「B」,一切都很好。但我無法將用戶A重新添加到表格「A」。 OnSuccess運行,所以行是移動的,但Action事件不會被調用。所以,如果我刷新屏幕,我可以看到這一舉動並未實際發生。如果我從表「B」上的用戶「B」開始,這也是一樣的。此外,頁面刷新(F5)不會修復鏈接,直到我關閉並重新打開頁面爲止。
在HTML中一切看起來不錯,它顯示在狀態欄,當我點擊鏈接,正確的href被調用,但提琴手註冊沒有調用,並且行動不被調用。
我懷疑我有某種綁定的問題,但我迷失在這裏。一切工作正常在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
}
}