2016-04-29 4 views
2

1つのコントローラで1.0複数のポスト方法:ASP.NETコアMVC私はこのコードを使用することによってこれを行うことができます

[HttpPost("SampleRoute1")] 
    public JsonResult Post([FromBody]SampleModel1 value) 
    { 
     .....Functionone..... 
     return Json(""); 
    } 

    [HttpPost("SampleRoute2")] 
    public JsonResult Post([FromBody]SampleModel2 value) 
    { 
     .....Functiontwo..... 
     return Json(""); 
    } 

しかし、私はこれを行うカント:

[HttpPost("SampleRoute1")] 
    public JsonResult Post([FromBody]SampleModel1 value) 
    { 
     .....Functionone..... 
     return Json(""); 
    } 

    [HttpPost("SampleRoute2")] 
    public JsonResult Post([FromBody]SampleModel1 value) 
    { 
     .....Functiontwo..... 
     return Json(""); 
    } 

それはエラー "タイプを提供します'Controller1'は既に 'Post'という同じパラメータタイプのメンバーを定義しています "

したがって、私は同じパラメータで1つのコントローラで2つのPostを作ることができますしかし、別のルートで?

投稿(SampleModel1)=> "Controller1 \ SampleRoute1" =>機能1

を行う

投稿(SampleModel1)=> "Controller1 \ SampleRoute2" =>はい機能2

答えて

7

を行う。このような

、 出来るよ。問題はクラス内に同じ名前の&という名前の2つのメソッドを持つことを試みていることです。これは不可能です。メソッドの名前を別のものに変更する必要があります。

アクション名&投稿要求タイプは、すでにHttpPost属性で指定されているので、メソッド名に頼る必要はありません。

[HttpPost("SampleRoute1")] 
public JsonResult Aaa([FromBody]SampleModel1 value) 
{ 
    .....Functionone..... 
    return Json(""); 
} 

[HttpPost("SampleRoute2")] 
public JsonResult Bbb([FromBody]SampleModel1 value) 
{ 
    .....Functiontwo..... 
    return Json(""); 
} 
3

2つの方法が同じであるため、エラーが表示されます。あなたはどのようなものを実行するのか、どのように分かりますか?これをあなたが定義したルートに基づいていますか?

私は2つの同じ赤いリンゴを食べるようにした場合、2つのリンゴに違いはなく、正しいリンゴを食べるように指示しました。どちらが正しいリンゴか知っていますか?

メソッド名が一意で識別可能になるように変更する必要があります。

[HttpPost("SampleRoute1")] 
public ActionResult Function1(SampleModel1 model) 
{ 
    return Json(""); 
} 

[HttpPost("SampleRoute2")] 
public ActionResult Function2(SampleModel1 model) 
{ 
    return Json(""); 
} 

だから、上記に基づいて、次のことが起こります:

  • だから今SampleModel1を投稿する際に、ルートController1\SampleRoute2を使用して、SampleModel2を投稿するとき、ルートController1\SampleRoute1を使用すると、今ではアクションメソッドFunction1
  • を実行しますがアクションメソッドFunction2を実行します。
関連する問題