我使用SumoSoft.CMS.Mvc,它是一個Nuget包,安裝在您的MVC項目中的一些視圖和DLL,以便快速構建CMS。如何擴展一個DLL中內置的MVC控制器
這些DLL包含一些控制器的代碼,如「SumoSoft.CMS.BlogController」。有什麼方法可以擴展這些控制器以添加新的Action?
例如,SumoSoft.CMS目前提供的操作:
/博客/指數
/博客/條
如果我想創建行動:
/博客/類別
我使用SumoSoft.CMS.Mvc,它是一個Nuget包,安裝在您的MVC項目中的一些視圖和DLL,以便快速構建CMS。如何擴展一個DLL中內置的MVC控制器
這些DLL包含一些控制器的代碼,如「SumoSoft.CMS.BlogController」。有什麼方法可以擴展這些控制器以添加新的Action?
例如,SumoSoft.CMS目前提供的操作:
/博客/指數
/博客/條
如果我想創建行動:
/博客/類別
我會認爲它只會像
public class YourController : SumoSoft.CMS.BlogController
{
public ActionResult YourAction
{
}
}
我也這麼認爲,但這會創建一個像/ YourController/YourAction的鏈接,而我試圖實現的是/ Blog/YourAction – tocqueville
爲什麼不嘗試使用'[Route()]'屬性和如果是這種情況,請指定路線? –
感謝Martin,這聽起來很有希望,但我無法讓它工作......我添加了routes.MapMvcAttributeRoutes();但現在我不確定要在控制器中編寫代碼 – tocqueville
您可以擴展您的路由表以爲您的自定義操作添加顯式路由。
routes.MapRoute(
name: "CustomBlogRouteActionJackson",
url: "Blog/CustomAction",
defaults: new { controller = "YourControllerNameWhichInheritsFromThatLibrariesController", action = "YourAwesomeActionName" }
);
確保這超出了其他路線。
是的,這實際上是有道理的,儘管我對Martin關於使用Route屬性的建議感興趣。在Controller中它的正確語法是什麼? – tocqueville
只要其不密封,就可以繼承它。 –