MVC 3: связь между частичным представлением и представлением через JavaScript - PullRequest
1 голос
/ 29 января 2012

У меня есть страница со списком пользователей (List.vbhtml), и у каждого пользователя есть ссылка «Изменить». Ссылка редактирования делает запрос Ajax:

@Ajax.ActionLink("Edit", "Edit", "Player", New With {.id = currentItem.PlayerId}, New AjaxOptions() with { .UpdateTargetId="edit"})

Метод Edit в моем контроллере возвращает частичное представление (_Edit), которое содержит форму. После отправки формы я хочу скрыть форму редактирования (не проблема), а затем перезагрузить список пользователей. Вот с чем я борюсь.

Как я могу сообщить родительскому представлению (List.vbhtml), что я должен перезагрузить список (что будет сделано с помощью запроса Get Ajax)?

Я не могу сделать это из частичного представления «Правка», потому что частичное представление «Правка» не должно знать о представлении «Список», только наоборот (представление «Список» знает о частичном представлении).

Мое текущее решение - вызвать пользовательское событие после завершения редактирования в _Edit.vbhtml и записать его в List.vbhtml:

_Edit.vbhtml:

//let anyone listening know the edit is complete
$(document).trigger('PersonEditComplete');

List.vbhtml

//when player edit is complete, reload the player list
$(document).bind('PersonEditComplete', function () {
    Player.List.Reload();
});

Спасибо

1 Ответ

1 голос
/ 29 января 2012

Вы можете использовать jQuery. ajaxComplete () обработчик событий. Вы должны проверить, является ли метод XHR GET или POST. Получить будет после загрузки пользовательской формы редактирования, POST будет после ее отправки.

Так что, если ajaxComplete срабатывает после вызова POST, вы должны обновить список пользователей через Ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...