直接从NuGet使用BetterCMS 2.0.6.192。全新的c#项目。
我已经完成了多次设置,但无法获得服务器小部件来调用自定义控制器/视图代码。
我正在尝试创建一个自定义服务器小部件。我在View/Widgets文件夹中有Phonebook.cshtml,并在网站的一个页面上注册为Widget。这个小部件视图将使用一些简单的html进行渲染,但当我尝试发布或渲染部分视图时,我会收到一个错误"路由表中没有与提供的值匹配的路由"。
在Phonebook.cshtml小部件中,我添加了
@{ Html.RenderAction("Index", "Phonebook", new {Area = ""}); }
但是未找到局部视图。在带有小部件的页面上看到的错误消息是,
"呈现视图"~/Views/Widgets/Phonebook.cs.html"时出错:路由表中没有与提供的值匹配的路由。".
我在/Views文件夹的/Controllers文件夹中有一个PhonebookController,我有一个Index.chtml。在调试时,索引视图永远不会被激发。
我还尝试添加
@{ Html.RenderAction("Index", "Phonebook", new { Area = "Phonebook" }); }
到/Views/Widgets/Phonebook.cshtml。我有/Areas/Phonebbook/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/
新手失误。忘记在Global.asax.cs文件中注册Routes。
旧代码-不起作用:
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);
}