С вашим текущим кодом, когда выполняется вызов ajax, полезная нагрузка запроса имеет только строковое значение.Например, если ваша нажатая ссылка имеет значение атрибута Id
"link1", она отправит нижеприведенную строку в качестве полезной нагрузки запроса для вашего вызова ajax (вы можете увидеть это, если откроете вкладку dev tools-> network tab)
"link1"
Для работы привязки модели полезная нагрузка должна иметь формат значения ключа, чтобы значение было сопоставлено параметру с тем же значением, что и ключ.
Поскольку оноэто простое значение, вам не нужно обязательно отправлять строковую версию JSON и contentType
как application/json
.Просто отправьте объект JS как data
.Убедитесь, что вы отправляете объект JavaScript, имя ключа / свойства которого совпадает с именем параметра вашего метода действия (id
), и оно будет работать.
Предполагается, что ваш тег привязки имеет действительное значение атрибута Id
так что выражение this.id
возвращает действительное строковое значение.
<a href="/SomeUrl" id="myId">MyLink</a>
В сценарии вы, вероятно, захотите также остановить нормальное поведение при щелчке, чтобы страница не переходила к значению атрибута href.
$(document).on('click', 'a', function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/brandsOfACategory',
data: { id :this.id }
}).done(function (res) {
console.log('result from ajax call',res);
})
});
Это отправит значение типа id=myId
в качестве данных формы для запроса.Поскольку вы не указываете явно тип содержимого, он будет использовать значение по умолчанию application/x-www-form-urlencoded
Если пользователь, на которого нажали ссылку, не имеет атрибута Id
, код не будет отправлять значение, поскольку this.id
вернетпустая строка и значение вашего параметра на стороне сервера будет нулевым.