从Umbraco v4升级到v7 SurfaceController路由表中的路由与提供的值不匹配

时间:2015-01-14 18:46:58

标签: c# asp.net-mvc umbraco umbraco7 surface-controller

我最近将我们的Intranet Umbraco站点从v4转换为v7.2,并将所有webform主页转换为mvc。 我正在尝试将应该是子操作的usercontrol转换为SurfaceController但是我在尝试调用操作时遇到了可怕的“路由表中没有路由匹配提供的值”错误:

@Html.Action("ServiceStatusInfo", "ServiceStatusSurface")

这只是一个不需要视图或模型的get动作。它只是调用服务器上的操作,服务器更新服务器上的文件,然后通过某些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”属性但同样问题的插件。

也许有一种我不知道的解决方法?

1 个答案:

答案 0 :(得分:0)

在动作调用中将StatusInfo更改为ServiceStatusInfo。这应该与行动的名称相匹配。

@Html.Action("ServiceStatusInfo", "ServiceStatusSurface")