Зачем менять первую букву свойства на строчную при обновлении проекта до .NET 8?

Я использовал .NET 7.x (ASP.NET Core 7 MVC) и библиотеку JavaScript v1.10.2 и использовал XHR в Ajax для получения данных от контроллера, как показано здесь.

Отправьте запрос на получение таких данных:

function SendRequestToGetData() {
   var xhr = $.ajax({
     url: "/Line/GetData",
     type: 'POST',
     dataType: 'json',
     contentType: 'application/json; charset=utf-8',
     success: function (msg) {

        // Here I can get the property with this: 
        var sentdata = msg.Name;
      },
      error: function (xhr) {}
   });
 }

На стороне сервера в контроллере инициализируйте объект и верните его следующим образом:

public class TestObject
{
    public string Name { get; set; }
}

//------------------------------------------------

public class LineController : Controller
{
    [HttpPost]
    public JsonResult GetData()
    {
        TestObject testbject=new TestObject {Name = "xxxxxxx"};
        return Json(testbject);
    }
}

Он работает нормально и ок. Я обновил свой проект до .NET 8 (.NET Core MVC) и обновил JavaScript до библиотеки v3.7.1. Теперь старые коды не работают, пока первая буква свойства не станет строчной, чтобы коды работали правильно.

Это значит изменить это:

var sentdata=msg.Name;

к этому:

 var sentdata=msg.name; //with the lowercase

Пока это не работает, хотите знать, что и почему стало причиной этого?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
79
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это поведение зависит от версии библиотеки JS, но не от версии .NET. Согласно вашему описанию, старая версия библиотеки JS использует преобразователь сериализатора JSON с политикой именования свойств по умолчанию, установленной на JsonNamingPolicy.PascalCase. Но в JS Library v3.7.1 политика именования свойств по умолчанию установлена ​​на JsonNamingPolicy.CamelCase.

Чтобы переопределить политику именования свойств по умолчанию, используемую преобразователем сериализатора JSON, создайте объект JsonSerializerOptions() и передайте его во втором параметре объекта Json().

Созданный объект JsonSerializerOptions без параметров будет содержать свойство PropertyNamingPolicy, для которого установлено значение null, а преобразователь сериализатора JSON будет использовать политику именования свойств JsonNamingPolicy.PascalCase.

[HttpPost]
public JsonResult GetData()
{
    var testobject = new TestObject { Name = "some-text"};
    return Json(testobject, new System.Text.Json.JsonSerializerOptions());
}

Дополнительную информацию см. в разделе Как настроить имена и значения свойств с помощью System.Text.Json

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

Как получить объект события из щелчка другого элемента события?
Модальный jquery и автозаполнение не работают с кнопкой обратной передачи
Отображение общей цены и размеров продукта в зависимости от количества и категории продукта в WooCommerce
Очень уникальная проблема клонирования — несколько действий клонирования на одной странице, но с разными идентификаторами
Индивидуальный макет карусели совы
Автоматическое обновление корзины WooCommerce при изменении количества товаров в корзине
Динамическое отображение определенного варианта оплаты на основе адреса электронной почты или телефона для выставления счета при оформлении заказа Woocommerce
У меня есть типы входных данных для флажка, и когда я выполняю методы удаления или получения, он работает, но страница не перезагружается
Пусть наложение div станет видимым через переход/анимацию круга клип-пути
Добавление кнопки удаления в поля динамического ввода в таблице