【发布时间】:2015-01-14 18:46:57
【问题描述】:
我最近将我们的 Intranet Umbraco 站点从 v4 转换为 v7.2,并将所有 webform 母版页转换为 mvc。 我正在尝试将应该是子操作的用户控件转换为 SurfaceController,但在尝试调用操作时出现可怕的“路由表中的路由与提供的值不匹配”错误:
@Html.Action("ServiceStatusInfo", "ServiceStatusSurface")
这只是一个不需要视图或模型的获取操作。它只是调用服务器上的操作,然后服务器更新服务器上的文件,然后由一些 javascript 读取。 我做了很多搜索,我使用 Umbraco 7 创建了一个示例解决方案,并创建了一个控制器文件夹,然后创建了一个“MySurfaceController”,我能够从示例解决方案的母版页调用操作,没有任何问题,但在最近转换项目似乎发生了一些奇怪的路由问题。我比较了当前项目和示例项目的 web.config,它们几乎具有相同的条目(我想也许我错过了一些东西)。看来我转换后的项目无法识别路由。任何帮助将不胜感激。
这是 SurfaceController
using Umbraco.Web.Mvc;
using System.Web.Mvc;
namespace MyUmbracoApp.Controllers
{
public class ServiceStatusSurfaceController : SurfaceController
{
// can't reach this either:
public ActionResult Index()
{
return Content("hello world");
}
// this is what I am trying to reach
[ChildActionOnly]
public ActionResult ServiceStatusInfo()
{
// do some stuff to get the status
return CurrentUmbracoPage();
}
}
}
我也尝试过使用“PluginController”选项,即使这不是具有“area”属性的插件但同样的问题。
也许有我不知道的解决方法?
【问题讨论】:
-
您可以尝试将@Html.Action("Index", "ServiceStatusSurface") 添加到您的基本布局页面,看看hello world 是否会显示您放置的位置?
-
抱歉,回复延迟,我没有意识到您发表了评论。我已经在我的基本页面 MasterPage.cshtml 中尝试过,但仍然遇到相同的错误。考虑到我从 v4 切换,我没有创建 _Layout.cshtml 页面,只是将 MasterPage.cshtml 引用为我的基本布局页面。也许我应该这样做?不过,我认为这不会对路由问题产生任何影响。
-
我今天实际上也试过这个:stackoverflow.com/questions/22925202/… 但仍然没有出现同样的错误。我想也许“Startup.cs”文件可以帮助解决路由问题,但它没有。也许有什么东西在覆盖 umbraco 路由表的地方挥之不去。
标签: c# asp.net-mvc umbraco umbraco7 surface-controller