@ У мистера Чифа была идея о безобразном хаке ... Я соединил это.Вот основной код, который я использовал для этого.Он действительно захватывает вызов ajax до того, как он подключен к сети.Ключ заключается в том, чтобы изменить отправляемый URL-адрес, поскольку сетка будет извлекать этот URL-адрес из HttpContext.Request.Path.и подключите его к щелчку для элемента привязки.
Я помещаю это в свой основной файл common.js и просто присоединяю функцию для захвата события ajaxSend, которое происходит непосредственно перед отправкой данных.
// Used to hijack the sending of all AJAX calls. Before it sends the call to the server, it checks to see if the
// active element (the element that prompted the call) is marked with a given class. If so, then it will perform
// the given operation.
$(document).ajaxSend(function (event, jqXHR, ajaxOptions) {
var activeElement = document.activeElement;
if ($(activeElement).attr('redosorturl') != null) {
// If this is a sort anchor link from a grid that needs to have the sort link redone, do it here.
// the code is in the eipGrip.js file.
if ($(activeElement).attr('redosorturl').toString() == 'redoSortURL') {
var newURL = RedoGridSortURL(activeElement, ajaxOptions.url.toString());
ajaxOptions.url = newURL.toString();
}
}
return false;
});
При рендеринге страницы я пометил тег в заголовке столбца, который содержит неверный URL, с именем класса "redosorturl", поэтому я знаю, что когда я перехватываю вызов ajax, операция должна выполняться с этим элементомЗатем я вызываю пользовательскую функцию, которая дает мне правильный URL, затем ajaxOptions.url переписывается с этим новым URL.
Я должен передать activeElement этой функции перезаписи, чтобы я мог пройти DOMчтобы получить информацию о сетке, куда я поместил данные, такие как контроллер и метод действия, которые используются вместе с идентификаторами и другими данными, которые я использую для URL. Аналогично, я передаю текущую строку URL, потому что сетка будет вводить токенв конце URL, который я анализирую и добавляю новый URL.