Component.ts
TableHeader(Id: any) {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({ headers: headers });
let body = JSON.stringify(Id);
var sub = this.http.post('api/Customers/GetColumnNames/', body, options)
.map((res: Response) => res.json());
}
WebApiController
[AcceptVerbs("Post")]
[ActionName("GetColumnNames")]
public DataSet GetColumnNames(String id) {
DataSet ds = new DataSet();
if (Convert.ToInt32(id) > 0) {
//AccountingMethods objAcc = new AccountingMethods();
//return ds = objAcc.GetColumnsNames("GetColumns", id);
}
return new DataSet();
}
当调用webapi控制器动作名称时,我没有被击中
答案 0 :(得分:0)
我们需要一些额外的信息:
我假设你有以下WebApiConfig
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Attribute routing.
config.MapHttpAttributeRoutes();
// Convention-based routing.
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
我也会尝试
[Route("api/Customers/GetColumnNames")]
[HttpPost]
如果所有其他方法都失败,请尝试将呼叫更改为
var sub = this.http.post('api/Customers/GetColumnNames', body, options)
.map((res: Response) => res.json());
尾部斜杠不应该影响通话,但过去曾经提到它是一个问题所以尝试它可能很有价值。
从浏览器中添加错误会有很大帮助(在chrome中它是F12,工具和网络可以看到通话。