ASP.NET – Как принять объект JSON в контроллереC#

Место общения программистов C#
Ответить
Anonymous
 ASP.NET – Как принять объект JSON в контроллере

Сообщение Anonymous »

Я пытаюсь отправить объект в формате JSON на свой контроллер, однако свойства объекта кажутся нулевыми, а полезная нагрузка отправляется, просто в запросе не происходит никакого сопряжения данных. p>
Я не видел много недавних решений этой проблемы, в основном созданных более 10 лет назад, и надеялся, что кто-нибудь сможет привести меня к современному решению этой проблемы.
У меня есть модель:
public class Expenses
{
public int Id { get; set; }
public int Month { get; set; }
public int Week { get; set; }
public int CategoryId { get; set; }
[ForeignKey("CategoryId")]
public Category category { get; set; }
public float Amount { get; set; }
public string Date { get; set; }
public string Description { get; set; }
}

Подобный объект я создаю в JS
//create the object
let expense = {
id: "listOrder"+listOfExpensesCounter,
Month: formData.month,
Week: formData.week,
Type: category[0],
Amount: formData.amount === "" ? 0 : formData.amount,
Date: formData.date === "" ? getCurrentDate() : formData.date,
Description: formData.description
}

Затем я выполняю AJAX-вызов контроллера:
function ajaxCall(expense) {
const obj = JSON.stringify(expense);
$.ajax({

url:'/Expenses/Create',

// Type of Request
contentType: 'application/json; charset=utf-8',
type: "Post",
data: obj,
dataType: "json",

// Function to call when to
// request is ok
success: function (data) {},

// Error handling
error: function (error) {}
});
}

Мой контроллер:
[HttpPost]
public async Task Create(Expenses expense)
{
try
{

Expenses newExpense = new Expenses
{
Month = expense.Month,
Week = expense.Week,
CategoryId = expense.CategoryId,
Amount = expense.Amount,
Date = expense.Date,
Description = expense.Description
};

_db.expensesRepository.Add(newExpense);
_db.Save();
return this.Ok($"hello world");
}
catch (Exception e)
{
return this.Ok($"hello world error");
}
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... controller
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»