代码之家  ›  专栏  ›  技术社区  ›  Giox

webapi c httppost变量为空

  •  0
  • Giox  · 技术社区  · 5 年前

    我在控制器中定义了一个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);
        }
    });
    
    3 回复  |  直到 5 年前
        1
  •  0
  •   ESG    5 年前

    您发送的对象带有 url 属性,但要求正文为字符串。

    尝试更改数据类型和数据,例如:

    dataType: "text",
    data: 'some-url-to-verify', 
    
        2
  •  0
  •   Imran Arshad    5 年前

    我有样本代码,你可以试试这个

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