无法在路线值中找到Umbraco路线定义

时间:2016-06-08 08:38:32

标签: c# razor umbraco

我正在尝试做一些相当基本的事情,但似乎没有用。 我有一个剃刀页面,我在NewsSurfaceController中调用了一个动作'Index'。

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    Layout = "Master.cshtml";
}
<div class="row">
    <h1 class="col-xs-12 col-sm-4">@CurrentPage.Name</h1>
    <div class="col-xs-12 col-sm-2 col-sm-offset-4 ">
        @Html.ActionLink("Archief", "Archive", "NewsSurface", null, new { @class = "content-link-button-reverse" })
    </div>
</div>



@Html.Action("Index", "NewsSurface")

我的新闻控制器:

public class NewsSurfaceController : SurfaceController
{
    private int itemsPerpage= 4;

    public ActionResult Index()
    {
        return PartialView("newslist", new NewsRepo(CurrentPage).items.Take(itemsPerpage));
    }

    public ActionResult Archive()
    {
       return PartialView("newslist", new NewsRepo(CurrentPage).archivedItems.Take(itemsPerpage));
    }

}

这会返回一个只迭代项目的部分视图。

@inherits Umbraco.Web.Mvc.UmbracoViewPage<MyProject.models.NewsItemViewModel>


        @foreach (MyProject.models.NewsItem item in Model)
        {
            //displays the properties
        }

当我转到页面时,它会正确显示项目,但是当我点击actionlink时会抛出错误。

  

无法在路线值中找到Umbraco路线定义,请求必须在Umbraco请求的上下文中进行

当我调试时,问题似乎是'CurrentPage'对象。

  

在Umbraco.Web.Mvc.SurfaceController.get_CurrentPage()      在MyProject.Controllers.NewsSurfaceController.Archive()在C:\ Users \ thomas \ Documents \ Visual Studio 2015 \ Projects \ MyProject \ Controllers \ NewsSurfaceController.cs:第25行      在lambda_method(Closure,ControllerBase,Object [])      在System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase控制器,Object []参数)      在System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext,IDictionary 2 parameters) at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary 2个参数)      在System.Web.Mvc.Async.AsyncControllerActionInvoker.ActionInvocation.InvokeSynchronousActionMethod()      在System.Web.Mvc.Async.AsyncControllerActionInvoker.b__39(IAsyncResult asyncResult,ActionInvocation innerInvokeState)      在System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult 2.CallEndDelegate(IAsyncResult asyncResult) at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase 1.End()      在System.Web.Mvc.Async.AsyncResultWrapper.End [TResult](IAsyncResult asyncResult,Object tag)      在System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)      在System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.b__3d()      在System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters。&lt;&gt; c__DisplayClass46.b__3f()

我做错了什么? 任何人都可以指出我正确的方向。

亲切的问候!

--------- --------编辑

Ok显然这是Umbraco中的一个错误。 Issue on the umbraco forum

1 个答案:

答案 0 :(得分:0)

您的控制器是否继承自SurfaceController?如果没有,路线将不会为您注册。