直接从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/
答案 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);
}