Angular2最终发布Http Post在MVC中不起作用

时间:2017-07-08 20:44:14

标签: angular asp.net-mvc-4 angular-ui-router angular2-services

我无法从Angular Service调用MVC APIController。任何人都可以帮忙。谢谢。

我的Route.Config如下所示。我允许所有路线。

public class RouteConfig
  {
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "{*anything}",     //"{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }
}

当我从应用程序调用帖子时,它的工作也没有发生任何错误。

forms.service.ts文件中的代码

    createForm(post: myForm) {

    console.log('Actual object: ' + JSON.stringify(post));
    console.log(JSON.stringify(post));
    return this._http.post(this._posturl, JSON.stringify(post)).map(response => response.json());
    }

API控制器的代码

  public class MinPostController : ApiController
{
   public MinPostController()
    {

    }

    [System.Web.Http.HttpPost]
    public ActionResult CreateForm([FromBody] PostFormModel input)
    {
         //Check if the post is hitting.
         bool status = false; 
    }

}

当我使用Fiddler发布Json时,它可以正常工作,如下所示。请找到下面的图片。

enter image description here

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

你可以在标题中添加Content-Type,看看有什么不同吗?

return this._http.post(this._posturl, JSON.stringify(post), this.getRequestOptions())
   .map(response => response.json())
   .catch(this.handleError);

private getRequestOptions() {
   return new RequestOptions({
      headers: new Headers({
         "Content-Type": "application/json"
      })
  });
}

private handleError(error: Response) {
   console.error(error);
}

答案 1 :(得分:0)

这就是答案。我必须创建一个observable然后订阅它。

https://stackoverflow.com/a/34948742/6707243