2016-10-19 77 views
0

直接從NuGet使用BetterCMS 2.0.6.192。全新的C#項目。BetterCMS服務器小部件控制器/查看未找到

我已經完成了多次設置,但無法獲得一個Server Widget來調用自定義控制器/視圖代碼。

我正在嘗試創建一個自定義服務器小部件。我在View/Widgets文件夾中有Phonebook.cshtml,並在網站中的頁面上註冊爲Widget。這個小部件視圖將使用一些簡單的html呈現,但是當我嘗試發佈或呈現局部視圖時,出現錯誤「路由表中沒有路由與提供的值匹配」。

內Phonebook.cshtml控件我已經加入

@{ Html.RenderAction("Index", "Phonebook", new {Area = ""}); }

但局部視圖中沒有找到。錯誤消息,在頁面上看到的小部件是,

「錯誤呈現視圖」〜/ Views/Widgets/Phonebook.cshtml「:路由表中沒有路由與提供的值匹配。」

我在/ Views文件夾中的/ Controllers文件夾中有一個PhonebookController我有一個Index.cshtml。儘管調試Index視圖從未被觸發。

我也嘗試添加

@{ Html.RenderAction("Index", "Phonebook", new { Area = "Phonebook" }); }

到/Views/Widgets/Phonebook.cshtml。我有/Areas/Phonebook/Controllers/PhonebookController.cs和/ Areas/Phonebook/Views/Index索引操作永遠不會被觸發。

我認爲這可能與路由有關。在PhonebookAreaRegistration.cs文件我有

context.MapRoute("Phonebook_default", "Phonebook/{controller}/{action}/{id}", new { action = "Index", id = UrlParameter.Optional });

在我註釋掉默認路由作爲文檔指示/App_Start/RouteConfig.cs。

幫助。

這是一個交叉發佈在Better CMS論壇,不知道論壇得到多少流量了。 http://www.bettercms.com/support/widgets-and-modules/struggling-with-server-widget/

回答

0

新人的錯誤。忘記在Global.asax.cs文件中註冊路由。

舊代碼 - 不工作:

protected void Application_Start() 
{ 
    cmsHost = CmsContext.RegisterHost(); 
    cmsHost.OnApplicationStart(this); 
} 

新代碼 - 作品:

protected void Application_Start() 
    { 
     cmsHost = CmsContext.RegisterHost(); 

     AreaRegistration.RegisterAllAreas(); 
     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 

     cmsHost.OnApplicationStart(this); 
    }