ASP.NET MVC 2: запретить ссылке действия ajax заменить updateTarget - PullRequest
1 голос
/ 14 мая 2011

Я использую ссылку действия ajax в представлении, затем привязываю функцию js к свойству onCompleted.В этой функции я получаю объект ответа, делаю некоторые забавные вещи, затем записываю свойство сообщения в элемент updatetarget.

Проблема в том, что когда он заканчивает свою работу над событием oncompleted, он записывает сырой jsonответ на элемент updatetarget, заменяя текст, который я уже написал.Я хочу предотвратить это, чтобы написать необработанный ответ на цель обновления.Мне известно о свойстве InsertionMode, но оно бесполезно для меня, потому что оно так или иначе добавляет текст к элементу.

Упомянутые мной сценарии приведены ниже;

Код действияссылка на просмотр:

<%: Ajax.ActionLink("Delete", "Delete", 
 new { id = Model.Id, secretKey = Model.SecretKey }, 
 new AjaxOptions { OnComplete = "WriteJsonResultToElement", UpdateTargetId="commandResult" })
%>

Функция WriteJsonResultToElement

function WriteJsonResultToElement(resultObject) {
updateTarget = resultObject.get_updateTarget();
obj = resultObject.get_object();
$(updateTarget).text(obj.message); // here i set the text of update target
if (obj.result > 0)
    $('*:contains("' + obj.id + '")').last().parent().remove();
}

Мой метод удаления JsonResult возвращает эти данные после действия:

{"message":"Deleted","result":1,"id":132}

Спасибо.

1 Ответ

0 голосов
/ 14 мая 2011

Если вы не хотите, чтобы необработанный ответ JSON добавлялся в DOM, не указывайте UpdateTargetId:

<%: Ajax.ActionLink(
    "Delete", 
    "Delete", 
    new { id = Model.Id, secretKey = Model.SecretKey }, 
    new AjaxOptions { OnComplete = "success" })
%>

и обрабатывайте его в обратном вызове успеха:

function success(result) {
    var obj = result.get_object();
    alert(obj.message);
    // TODO: do something with the object
}
...