2015-09-28 64 views
0

我使用SumoSoft.CMS.Mvc,它是一個Nuget包,安裝在您的MVC項目中的一些視圖和DLL,以便快速構建CMS。如何擴展一個DLL中內置的MVC控制器

這些DLL包含一些控制器的代碼,如「SumoSoft.CMS.BlogController」。有什麼方法可以擴展這些控制器以添加新的Action?

例如,SumoSoft.CMS目前提供的操作:

/博客/指數

/博客/條

如果我想創建行動:

/博客/類別

+2

只要其不密封,就可以繼承它。 –

回答

0

我會認爲它只會像

public class YourController : SumoSoft.CMS.BlogController 
{ 
    public ActionResult YourAction 
    { 
    } 
} 
+0

我也這麼認爲,但這會創建一個像/ YourController/YourAction的鏈接,而我試圖實現的是/ Blog/YourAction – tocqueville

+0

爲什麼不嘗試使用'[Route()]'屬性和如果是這種情況,請指定路線? –

+0

感謝Martin,這聽起來很有希望,但我無法讓它工作......我添加了routes.MapMvcAttributeRoutes();但現在我不確定要在控制器中編寫代碼 – tocqueville

0

您可以擴展您的路由表以爲您的自定義操作添加顯式路由。

routes.MapRoute(
     name: "CustomBlogRouteActionJackson", 
     url: "Blog/CustomAction", 
     defaults: new { controller = "YourControllerNameWhichInheritsFromThatLibrariesController", action = "YourAwesomeActionName" } 
    ); 

確保這超出了其他路線。

+0

是的,這實際上是有道理的,儘管我對Martin關於使用Route屬性的建議感興趣。在Controller中它的正確語法是什麼? – tocqueville