1

这里有点睡眠剥夺实验..

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

这就是我卡住的地方,重定向到 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);
    }
}
4

1 回答 1

0

我通过扩展PluginController而不是UmbracoApiController遵循这里的方法得到了类似的东西。

于 2014-12-19T02:04:02.837 回答