Вы делаете два отдельных запроса, когда нажимаете на ссылку. Во-первых, ваш запрос AJAX, который успешно выполняется. Но, поскольку вы нажимаете на ссылку, вы также делаете стандартный запрос GET, когда ваш браузер пытается перейти по этой ссылке. Этот второй запрос не выполняется, потому что GET не разрешен для этого действия контроллера.
Вы можете отменить запрос по умолчанию в своем коде JavaScript:
$(document).on('click', 'a', function (e) {
e.preventDefault();
// the rest of your code...
});
Или вы можете сохранить текущий шаблон использования #
в своих ссылках и сохранить URL-адрес в другом месте, отличном от href
. Что-то вроде:
<a id="@c.Key" href="#" data-href="@Url.Action("ListOfBrandNames","Home")">@c.Key</a>
и в вашем JavaScript:
var Url = $(this).data("href");
Или, возможно, полностью заменить ссылку кнопкой (я подозреваю, что это будет более семантически правильным):
<button type="button" id="@c.Key" data-href="@Url.Action("ListOfBrandNames","Home")">@c.Key</button>
Таким образом, он не будет иметь действия по умолчанию (но, конечно же, будет учитывать любые теги <form>
), а будет использоваться только для вызова операции на стороне клиента, что вы и делаете в код в любом случае.
<ч />
В любом случае вам решать, но главное - вам нужно запретить браузеру отправлять GET-запрос на ваше действие только для POST.