Я использовал .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
Пока это не работает, хотите знать, что и почему стало причиной этого?





Это поведение зависит от версии библиотеки 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