2017-10-30 12 views
0

コントローラのアクションをプログラムで呼び出す方法はありますか?例えばパスからコントローラアクションを呼び出す方法は?

、のようなもの:私は、私が直接使用することができます知っている

var controller = new MyWebApiController(); 
controller.InvokeAction("/myAction?param1=2"); 

「controller.MyActionは(2)」が、私は、文字列にパスやクエリを持っていると私は、関数に直接マップしたいですおよびパラメータ。

環境:ASP NET CORE 2.0

アップデート:私は別のコントローラからそれを呼び出すことではないのです

。私は、外部イベントによってトリガーされる通常の関数から呼び出す必要があります。受信したデータは、パスとクエリ、あるように「/ myAction?パラメータ1 = 2」

+0

のような部分で文字列を分割することにより、コントローラからそれを呼び出すことができますhttps://stackoverflow.com/questions/2910948/can-we-call-the-method-of-a-controller-from-another-controller-in-asp-net-mvcには多くの方法があります。 – Jasen

+0

ありがとうございます。私は答えを見たが、彼らの大部分はコードから直接アクションを呼び出す。私はパスとクエリを文字列で持っています。ちなみに、私はコントローラからそれを呼び出すわけではありません。これは、外部イベントによってトリガされる関数からのものです。 – kokokok

答えて

4

あなたが別のコントローラからこれを呼び出している場合は、この

string urlPath = "/myAction?param1=2"; 
string[] str = urlPath.Split(new[] { "/", "?", "=" },StringSplitOptions.RemoveEmptyEntries); 
var actionName = str[0]; 
var parameterVal = str[2]; 
return RedirectToAction(actionName, CONTROLLERNAME, new { parameterVal }); 
関連する問題