Model view controller 如何将渲染器从RenderMvcController重定向到UmbracoApiController

Model view controller 如何将渲染器从RenderMvcController重定向到UmbracoApiController,model-view-controller,backbone.js,umbraco,Model View Controller,Backbone.js,Umbraco,这里有点睡眠不足 我最近一直在玩Backbone.js,想知道是否有一种方法可以将客户端路由与umbraco的服务器端路由结合起来。按照我的想法,控制器将重定向到UmbracoApiController以返回json,而不是为路由表中的模板名称返回典型的RenderMvcController ActionResult,实际上是将路由到模板的任务交给主干客户端 这就是我被困的地方,重定向到UmbracoApiController-希望有人能看到我错过了什么 干杯 编辑:忘记了我收到的错误消息 路由

这里有点睡眠不足

我最近一直在玩Backbone.js,想知道是否有一种方法可以将客户端路由与umbraco的服务器端路由结合起来。按照我的想法,控制器将重定向到UmbracoApiController以返回json,而不是为路由表中的模板名称返回典型的RenderMvcController ActionResult,实际上是将路由到模板的任务交给主干客户端

这就是我被困的地方,重定向到UmbracoApiController-希望有人能看到我错过了什么

干杯

编辑:忘记了我收到的错误消息

路由表中没有与提供的值匹配的路由。

public class HomeController : Umbraco.Web.Mvc.RenderMvcController
{
    [HttpGet]
    public ActionResult Index()
    {
        return RedirectToAction("GetAllProducts", "ProductsApi");
    }
}
public class ProductsApiController : Umbraco.Web.WebApi.UmbracoApiController
{
    public IEnumerable<string> GetAllProducts()
    {
        return new[] { "Table", "Chair", "Desk", "Computer", "Beer fridge" };
    }
}


public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "Umbraco/Api/{controller}/{action}/",
            defaults: new { id = RouteParameter.Optional }
        );

        var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
        config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
    }
}

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}
公共类HomeController:Umbraco.Web.Mvc.RenderMvcController
{
[HttpGet]
公共行动结果索引()
{
返回重定向操作(“GetAllProducts”、“ProductsApi”);
}
}
公共类产品SAPIController:Umbraco.Web.WebApi.umbracapicontroller
{
公共IEnumerable GetAllProducts()
{
归还新的[]{“桌子”、“椅子”、“桌子”、“电脑”、“啤酒冰箱”};
}
}
公共静态类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“Umbraco/Api/{controller}/{action}/”,
默认值:新建{id=RouteParameter.Optional}
);
var appXmlType=config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t=>t.MediaType==“应用程序/xml”);
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}
}
公共类MVC应用程序:System.Web.HttpApplication
{
受保护的无效应用程序\u Start()
{
RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}

我通过扩展
pluginControl
而不是
umbracapicontroller
实现了类似的功能