У меня есть другое решение, которое использует URL AJAX, чтобы выбрать исходную ссылку, по которой щелкнули. Это решение будет работать правильно только в том случае, если есть только один ActionLink с точным URL:
онтроллер создает список ссылок, как это
<ul id="MainMenu">
@foreach (var item in Model.MenuItems)
{
<li>@Ajax.ActionLink(item.Caption,
item.ActionName,
item.ControllerName,
new AjaxOptions
{
UpdateTargetId = "pageBody",
OnBegin = "BeginUpdatePage",
OnComplete = "EndUpdatePage",
OnFailure = "FailUpdatePage"
})
</li>
}
</ul>
У меня есть такой javascript
function BeginUpdatePage() {
$("#MainMenu li").removeClass('selected');
$(this).parent().addClass('selected');
$("#pageBody").fadeTo('slow', 0.5);
}
function EndUpdatePage() {
$("#pageBody").fadeTo('slow', 1);
}
function FailUpdatePage() {
alert('There has been an error loading this page please try again.');
}
в функции BeginUpdatePage строки 1 и 3 выполняются нормально, а в строке 2 "$ (this) .parent (). addClass ('selected');" явно ничего не делает ... (я объявил этот класс в моем css).
Я посмотрел на документы Jquery (Jquery.ajax ()) это говорит о том, что «это» - элемент, по которому щелкнули. Я также проверил "jquery.unobtrusive-ajax.js", который был в моем проекте по умолчанию. Этот файл также передает "this" при выполнении моей функции.
"result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this,arguments);"
Что я тут не так делаю ... Я виделдругие примеры которые использовали эту технику, но я терпел неудачу весь день!
Как я могу получить к элементу, на котором щелкнули, внутри моего Бегина, завершить функции.