Как передать строку из представления в контроллер в MVC - PullRequest
0 голосов
/ 02 января 2019

Этот код JavaScript используется для передачи строки из представления в действие в контроллере:

<script type="text/javascript">
    $(document).on('click', 'a', function () {
        $.ajax({
            type: 'POST',
            url: '/brandsOfACategory',
            contentType: 'application/json; charset:utf-8',
            data: JSON.stringify(this.id)
        })
    });
</script>

brandsOfACategory код в контроллере:

public ActionResult brandsOfACategory(string id)
    {
        return View();
    }

Код неработает так, как ожидалось, так как id равен нулю.

Может кто-нибудь, пожалуйста, руководство?

Ответы [ 3 ]

0 голосов
/ 02 января 2019
$.ajax({
  type: 'POST',
  url: '/brandsOfACategory',
  contentType: 'application/json; charset:utf-8',
  data: { 'id': id }
})
0 голосов
/ 02 января 2019

Код Ajax

$.ajax({
    url: "controllerurl",
    type: "POST",
    data: {
        id: "123"
    },
    dataType: "json",
    success: function(result) {
        //Write your code here
    }
});

Для получения дополнительной информации о ajax ссылка

Привязка параметров в ASP.Net ссылка

0 голосов
/ 02 января 2019

С вашим текущим кодом, когда выполняется вызов 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 вернетпустая строка и значение вашего параметра на стороне сервера будет нулевым.

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