2017-01-31 6 views
1

post asp netコアコントローラアクションを呼びたいと思います。Angular2 httpポストコントローラの動作をキャッチする

ここに私のコードです: メッセージコントローラ

[Route("api/[controller]")] 
public class MessageController : Controller 
{ 
    [HttpPost] 
    public IActionResult AddBlog(string email) 
    { 
     //test 
     return View(); 
    } 
} 

私形式:

<form [formGroup]="contactForm" (ngSubmit)="onSubmitModelBased()"> 
    <div class="form-group"> 
     <label for="email">Email</label> 
     <input type="email" class="form-control" id="email" formControlName="email" placeholder="email"> 
    </div> 
    <button type="submit" class="btn btn-block btn-primary">Wyślij</button> 
</form> 

と私のコンポーネントTS

public onSubmitModelBased() { 
    alert("test"); 
    let body = JSON.stringify({ email: '[email protected]' }); 
    let headers = new Headers({ 'Content-Type': 'application/json' }); 
    this.http 
     .post('/api/Message/AddBlog', body, { headers: headers }) 
     .subscribe(data => { 
      alert('ok'); 
     }, error => { 
      alert('not ok'); 
     }); 
} 

私は、 alert( "test")とhttp.postアクションがalert( 'ok')を返します。 コントローラーアクションでもブレークポイントを作成しましたが、そこにはキャッチされていません。

+0

'Startup.cs'ファイルの内容を含めることができますか? – Danoram

+0

@Danoram startup.csのどの部分を使いたいですか? – Cieja

答えて

3

あなたのルーティングは次のようになります。

[Route("api/[controller]/[action]")] 
public class MessageController : Controller 
{ 
    [HttpPost] 
    public IActionResult AddBlog([FromBody] AddBlogModel model) 
    { 
     //test 
     return View(); 
    } 
} 

あなたはそれが、今設定した方法は、POSTリクエストを/ API /メッセージに来るときにアクションがヒットされることを意味します。アクションプレースホルダを追加すると、意図したとおりに/ api/message/addblogへのPOST要求を受け入れることができます。

EDIT:JSONオブジェクトを送信していますが、MVCがそれを理解することを期待しています。モデルクラスを作成する必要があります:

public class AddBlogModel 
{ 
    public string Email { get; set; } 
} 

上記のようにコントローラの動作を変更してください。これによりMVC Coreに、JSONであるリクエスト本体に基づいてモデルを作成する必要があることが通知されます。モデルには、電子メールアドレスを含む単一のプロパティが含まれています。

+0

これでPOSTのhttp:// localhost:57572/api/Message/AddBlog 500(内部サーバーエラー)が表示されます – Cieja

+0

少なくとも、データのビューモデルを定義する必要があります。そうでなければ、ログをチェックする必要があります。 – juunas

+0

角度の付いたログを作成するにはどうしたらいいですか?今私は警戒している( 'not ok'); – Cieja

関連する問題