2017-07-27 63 views
0

我有一個搜索控制器,其中包含一個帶有多個參數並具有一堆邏輯的通用搜索()操作。我想從其他控制器調用它,但沒有大量的複製/粘貼代碼。如何爲控制器動作設置多個別名

我想從這些不同的URL/controllers.actions中調用此操作。

/Search/Search?text=mySearchText /User/SearchTransactions?type=purcahse /Transactions/UserSearch?UserId=1

我可以在方法移到baseController,但我不得不調用每個控制器/搜索,我想將它們全部命名不同。

+1

是你所有的邏輯,實際上在你的通用「搜索」行動?如果是這樣,我強烈建議您將該邏輯移出到不同的類,然後您可以從解決方案中的任何*控制器/操作調用該類。我沒有看到有理由破解MVC路由,當它應該是一行或兩行共享方法來執行搜索時。 – Tommy

+0

@Tommy我試過,但我有一堆邏輯,也增加了viewbag和其他上下文相關的東西,成爲一個混亂,試圖傳遞到該類方法與行動 – user3953989

回答

1

你已經有解決方案的人把它放在基本控制器與actionName屬性

[ActionName("Search1")] 
    public ActionResult SearchText(string text) { 
     return View(); 
    } 

    [ActionName("Search2")] 
    public ActionResult SearchType(string Type) { 
     return View(); 
    } 

    [ActionName("Search3")] 
    public ActionResult searchId(int ID) { 
     return View(); 
    } 

裝飾它,現在你可以像

/search1 
/search2 
/search3 
+0

只有一個實際的搜索()行動I '喜歡使用,我不能使用多個ActionName屬性,我知道 – user3953989

+1

@ user3953989所以基本上你想打電話給1個動作與3個不同的名字 –

+0

我真的不認爲這gonnahappen人,雖然你可以做一個重定向到行動hack我猜你可以檢查我的第二個答案 –

相關問題