Значение не может быть нулевым. Имя параметра: сущность, ИСПОЛЬЗУЮЩАЯ МЕТОД HTTPPOST

#c# #jquery #asp.net #asp.net-mvc #asp.net-web-api

#c# #jquery #asp.net #asp.net-mvc #asp.net-web-api

Вопрос:

Здравствуйте, когда я использую метод Post с использованием Web API, я не смог добавить его в базу данных. Я использовал Jquery для вызова api POST METHODE
При использовании postman, я смог опубликовать некоторые данные в базе данных. Я предполагаю, что проблема в представлении или в Jquery. Любая помощь, пожалуйста

КОНТРОЛЛЕР MVC

         public ActionResult New(Customers customers)
    {
       
        return View(customers);
    }
 

КОНТРОЛЛЕР API ДЛЯ POST

         [HttpPost]
    public IHttpActionResult CreateCustomer(Customers CustomerDTO)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest();
        }
      
        _context.Customerss.Add(CustomerDTO);
        _context.SaveChanges();

        return Created(new Uri(Request.RequestUri   "/"   CustomerDTO.Id), CustomerDTO);

    }
 

Вид

     @model API.Models.Customers


@{
    ViewBag.Title = "New";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>New Form</h2>

<div id="container">
    <form>
        <div class="form-group" id="NameGroup">
            @Html.LabelFor(m => m.Name)
            @Html.TextBoxFor(m => m.Name, new { @class = "form-control", id = "Name" })
        </div>
        <button type="submit" class="btn btn-primary js-Add">Save</button>
    </form>
</div>


@section scripts {

    <script type="text/javascript">
        $(document).ready(function () {
            
            $("#container .js-Add").on("click", function (e) {
                e.preventDefault();

                if (confirm("Are you sure you want to ADD this customer?")) {

                    var input = $("Name").val();

                    $.ajax({
                        url: "../api/Customer",
                        type: "POST",
                        data: JSON.stringify(input),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (response) {
                            alert('HELLO'   response.Name);
                        }
                    });
                }
            });
        });
    </script>
}
 

КЛАСС CUSTOMER

     public class Customers
{
    public int Id { get; set; }

    [Required]
    public string Name { get; set; }
}
 

ЛЮБАЯ ПОМОЩЬ, ПОЖАЛУЙСТА, ИЛИ ЛЮБОЙ СОВЕТ
Спасибо!!

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

1. Если вы просто пытаетесь передать имя клиента, а не фактический объект, просто измените принятый параметр для вашего метода POST API. Попробуйте вместо этого: $.ajax({ url: «../api/ Customer», данные: { ‘custName’: ввод }, тип: ‘POST’, Тип данных: ‘json’ }) Измените свой метод POST API на этот: [HttpPost] public IHttpActionResult CreateCustomer(string custName){ …. }

2. привет, Филипе, спасибо за вашу помощь, я хочу опубликовать имя клиента в своей базе данных, используя метод post. нужно ли вызывать api таким образом, используя jquery, или есть другой способ вызвать или использовать HttpPost для отправки данных в базу данных

3. Поскольку ваше приложение MVC отделено от вашего API (или, по крайней мере, так кажется), вы также можете сначала вызвать jquery метод post на вашем контроллере MVC, который затем использует httpclient для вызова API. Но то, как у вас сейчас есть, не является неправильным. Вы пробовали делать то, что я упомянул в моем первом комментарии?