c# - 404 不是由 ajax 调用后产生的

标签 c# javascript jquery asp.net-web-api asp.net-web-api-routing

我正在尝试将一些数据发布到 Web api Controller ,但我似乎收到了 404 NOT Found 响应,这是我的代码:

 public class CarsController : ApiController
{
  .....

    [HttpPost]
    public CarInputCharacteristicsDTO PostCharacteristics(CarInputCharacteristicsDTO characteristics)
    {
        return characteristics;
    } 
}

public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{action}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

        config.Formatters.Clear();
        config.Formatters.Add(new JsonMediaTypeFormatter());
    }

  public class CarInputCharacteristicsDTO
{
    public int Manufacturer { get; set; }
    public int ModelType { get; set; }
    public int Fuel  { get; set; }
    public int Transmission { get; set; }
    public int BodyType { get; set; }
    public int PriceFrom { get; set; }
    public int PriceTo { get; set; }
    public int Power { get; set; }
    public int YearFrom { get; set; }
    public int YearTo { get; set; }
    public int KilometersFrom { get; set; }
    public int KilometersTo { get; set; }
}

这是我的 Javascript 代码:

 display.on("click", function () {
    if (isValidInput()) {
        var data = {
            Manufacturer: manufacturer.val(),
            ModelType: modelType.val(),
            Fuel: fuel.val(),
            Transmission: transmision.val(),
            BodyType: bodyType.val(),
            PriceFrom: priceFrom.val(),
            PriceTo: priceTo.val(),
            Power: power.val(),
            YearFrom: yearFrom.val(),
            YearTo: yearTo.val(),
            KilometersFrom: kilometersFrom.val(),
            KilometersTo: kilometersTo.val()
        };
        var url = "http://localhost:3471/api/Cars/PostCharacteristics";

        $.post(url, JSON.stringify(data) , function(stuff) {
            console.log(stuff);
        });
    }
});

我做错了什么?

编辑

这是我的网址的基本路径:

enter image description here

问题是我还在另一种情况下以相同的方式执行了 get 请求,它起作用了,这是我的代码:

function getModelTypes(value) {
    var url = "http://localhost:3471/api/Cars/GetModelTypes/" + value;
    var modelTypeDefaultContent = "Please select a model";
    $.getJSON(url, function (arrayObjects) {
        ---
    });
}

如果需要任何其他信息,请告诉我

最佳答案

再次查看代码后,我意识到您缺少方法参数的 [FromBody] 标记。

尝试将代码更改为如下:

[HttpPost]
public CarInputCharacteristicsDTO PostCharacteristics([FromBody]CarInputCharacteristicsDTO characteristics)
{
    return characteristics;
}

编辑:

使用您提供的代码,它可以在干净的项目中正常工作。因此,其他地方一定有一些代码导致了这个问题。正如 Kiran 所说,请提供完整的 Global.asax 文件以获得进一步的帮助。

关于c# - 404 不是由 ajax 调用后产生的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20979522/

相关文章:

c# - 文件未正确读取 Visual Studio 中 ASPX 文件的输入

c# - 如何从客户端 JavaScript 函数调用服务器方法背后的代码?

javascript - 为什么在动态加载数据时 jqGrid 不显示第二页?

javascript - Bootstrap 模式确认后更改选择列表

php - 优化 jQuery 速度

javascript - Kendo ui 网格命令模板点击链接功能

c# - MongoDB 的推送和根在 C# 中的等效项是什么?

c# - 将 blob 和容器列出到列表框 C#

c# - 如何在 response.redirect 之前执行启动脚本?

javascript - 在按钮列表中单击的按钮下滑动 div