2015-11-16 145 views
0

有沒有一種方法可以從普通的C#類(不是控制器)調用控制器動作?來自非控制器類的呼叫控制器動作

所有我迄今發現使用redirectToAction,但這是控制器排斥。

+2

難道你不能通過創建實例和調用使用相同的實例來簡單調用函數嗎? –

+1

您可能正在做的是將業務邏輯代碼保存在控制器中,而不是分離出來。我建議你不要這樣做,並將你正在使用的代碼移動到可以正確使用的位置。 – DavidG

+0

你的意思是,創建一個控制器的實例,並調用該實例的方法? – chiapa

回答

2

控制器是像任何其他類,這意味着你可以這樣做:

var homeController = new HomeController();

(假設你有你的項目引用的設置,我不包括在我的例子命名空間,因爲我不知道是什麼你是)

這樣你就可以通過homeController變量執行該控制器的方法。但是,正如評論中指出的那樣,這根本不是一個好設計。我強烈建議你不要這樣做。

控制器應當從其它控制器,或web請求被調用。

0

如果你想使用寫在某個控制器動作中的相同代碼,我認爲更好的選擇是在業務層中有一個C#類,然後使用在需要時重複使用的相同功能。在控制器操作方法中也有一個實例化的類,並調用特定的函數。

public class BAL.A 
{ 
public void Method(){ 
/*Implementation here. */ 
} 
} 


using BAL; 

Public Class HomeCOntroller{ 


public void Index(){ 

A objA=new A(); 
objA.Method(); 
} 
} 

我希望這將有助於重新使用該功能。

+0

不要看它的語法,因爲它可能是錯誤的,但嘗試着明白。讓我知道你是否需要正確的語法 –