Как передать строку из представления в контроллер в mvc

Этот код 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>

BrandOfAКод категории в контроллере:

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

Код работает не так, как ожидалось, поскольку идентификатор становится нулевым.

Кто-нибудь может помочь?

this.id может содержать ноль - также нет необходимости использовать contentType, потому что вы можете передавать его как data: { id: "someid" }.
Tetsuya Yamamoto 02.01.2019 07:02
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
351
3

Ответы 3

В вашем текущем коде, когда выполняется вызов ajax, полезная нагрузка запроса имеет только строковое значение. Например, если ваша нажатая ссылка имеет значение атрибута Id "link1", она отправит приведенную ниже строку в качестве полезной нагрузки запроса для вашего вызова ajax. (Вы можете увидеть это, если откроете свои инструменты разработчика-> вкладку сети)

"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.info('result from ajax call',res);
    })
});

Это отправит значение типа id=myId в качестве данных формы для запроса. Поскольку вы не указываете contentType явно, он будет использовать application/x-www-form-urlencoded по умолчанию.

Если ссылка, по которой щелкнул пользователь, не имеет атрибута Id, код не отправит никакого значения, потому что this.id вернет пустую строку, а значение вашего параметра на стороне сервера будет нулевым.

$.ajax({
  type: 'POST',
  url: '/brandsOfACategory',
  contentType: 'application/json; charset:utf-8',
  data: { 'id': id }
})

Код Ajax

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

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

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

Другие вопросы по теме