找不到BetterCMS服务器小部件控制器/视图

时间:2016-10-19 14:57:09

标签: bettercms

直接从NuGet使用BetterCMS 2.0.6.192。全新的c#项目。

我已多次完成设置但无法获取服务器小组件来调用自定义控制器/视图代码。

我正在尝试创建自定义服务器小部件。我在View / Widgets文件夹中有Phonebook.cshtml,并在站点的页面上注册为Widget。这个小部件视图将使用一些简单的html进行渲染,但是当我尝试发布或渲染局部视图时,我得到一个错误"路由表中没有路由匹配提供的值"。

在Phonebook.cshtml小部件中,我添加了

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

但找不到局部视图。在包含小部件的页面上看到的错误消息是

  

"渲染视图"〜/ Views / Widgets / Phonebook.cshtml"出错:路由表中的路由与提供的值不匹配。"。

我在/ Views文件夹的/ Controllers文件夹中有一个PhonebookController我有一个Index.cshtml。调试索引视图时永远不会被触发。

我也尝试过添加

@{ 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中,我按照文档中的说明注释了默认路由。

帮助。

这是在更好的CMS论坛中发布的交叉版,不确定该论坛获得了多少流量。 http://www.bettercms.com/support/widgets-and-modules/struggling-with-server-widget/

1 个答案:

答案 0 :(得分: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);
   }