Переменная HttpPost в WebAPI C # пуста - PullRequest
0 голосов
/ 26 мая 2019

У меня есть метод webapi, определенный в контроллере следующим образом:

[Authorize]
[HttpPost]
[Route("api/Resources/{resourceID:int}/VerifyUrl")] //Custom Routing 
public object VerifyResourceURL([FromBody]string url, int resourceID)

Когда я вызываю его с помощью jquery ajax, переменная url всегда равна нулю, почему?

(resourceID имеетправильное значение)

$.ajax({
    url: '/api/resources/15/VerifyUrl',
    type: "POST",
    async: true,
    dataType: "json",
    data: { url: 'some-url-to-verify' }, 
    success: function (data) {
        if (data.Exist === false) {
            urlIsValid = true;
        }
        else {
            alert('URL already exist');
            urlIsValid = false;
        }
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.log("Status: " + textStatus, "Error: " + errorThrown);
    }
});

Ответы [ 2 ]

0 голосов
/ 27 мая 2019

У меня есть пример кода, и вы можете попробовать что-то вроде этого

//JavaScript
     var command = {
                    url: $("#txtOrigin").val()               
                };



        $.ajax({
            type: "POST",
            url: "/api/booking",
            contentType: "application/json",
            data: JSON.stringify(command),
            dataType: "text",
            success: Created,
            error: Failed
        });

//C# MVC Controller
public async Task<IActionResult> Create([FromBody] CreateBookingCommand command)
{

}
0 голосов
/ 26 мая 2019

Вы отправляете объект со свойством url, но ожидаете, что тело будет строкой.

Попробуйте изменить тип данных и данные следующим образом:

dataType: "text",
data: 'some-url-to-verify', 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...