WebAPI C#HttpPost变量为空

时间:2019-05-25 21:30:57

标签: c# asp.net-web-api

我在控制器中定义了如下的webapi方法:

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

当我使用jquery ajax调用它时,变量url始终为null,为什么?

(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 :(得分:0)

您要发送一个具有url属性的对象,但希望该主体为字符串。

尝试这样更改数据类型和数据:

dataType: "text",
data: 'some-url-to-verify', 

答案 1 :(得分:0)

我有示例代码,您可以尝试这样的

//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)
{

}