Метод контроллера не получит параметров

#javascript #ajax #.net-core #fetch

#javascript #ajax #.net-ядро #выборка

Вопрос:

Я сделал запрос post ajax на стороне сервера. запрос поступил на сервер, но полученные параметры пусты / нулевые.

понятия не имею, почему это происходит, проблема, вероятно, в сервере. перепробовал много решений, но ничего не изменилось.

Я надеюсь, что некоторые из вас могут мне помочь.

     fetch('Home/AddMovie', {
        method: 'POST',
        headers: {

            'Accept': 'application/json',
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({
            movie: data_object
        }),

    }).then(res => res.text())         
        .then(text => {

        })  

        .catch((error) => {

            console.error('Error:', error);
        });
  

 [HttpPost]
    public void AddMovie(Movie movie)
    {
        var movies = new List<Movie>();
        var newJson = "";
        using (StreamReader r = new StreamReader(JsonFilePath))
        {
            string json = r.ReadToEnd();

            movies = JsonConvert.DeserializeObject<List<Movie>>(json);
            movies.Add(movie);
            newJson = JsonConvert.SerializeObject(movies, Formatting.Indented);

        }

        System.IO.File.WriteAllText(JsonFilePath, newJson);
    }
  

Ответ №1:

Это сработает

 public void AddMovie([FromBody] Movie movie) { } 
  

Редактировать:

Удалите JSON.stringify(), просто назначьте сам объект

Комментарии:

1. после удаления JSON. Stringfy —> body: {data_object} . параметр movie равен null в действии контроллера.