调用web API字符串参数

use*_*709 2 ajax asp.net-mvc asp.net-web-api

我有这个功能

[System.Web.Http.HttpGet]
[System.Web.Http.ActionName("StartProcess")]
public object StartProcess(string items)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

试着打电话

$.ajax({
     url: '/api/Details/StartProcess',
     type: 'get',
     contentType: 'application/json',
     data: items,
     success: function() {
         logger.log('Successful', "", "", true);
     },
     error: function(error) {
         var jsonValue = jQuery.parseJSON(error.responseText);
     });
Run Code Online (Sandbox Code Playgroud)

继续得到404错误.我的其余调用工作,但这是我需要发送参数的第一个.

items只是逗号分隔的字符串.

这是我的路线信息.

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id=Urlameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

我缺少什么想法?

wiz*_*rdz 5

您收到404错误,因为您的路由表无法解析网址"/ api/Details/StartProcess"

为了使WebAPI路由工作,您需要修改路由集合的"MapHttpRoute()"函数而不是"MapRoute()"

所以请更改下面的API路由(假设您使用的是默认api),它应该可以正常工作.

    routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional }
    );
Run Code Online (Sandbox Code Playgroud)