我如何将一个从RenderMvcController重定向到UmbracoApiController

时间:2013-10-22 11:43:23

标签: model-view-controller backbone.js umbraco

这里的一些睡眠剥夺了实验......

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

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

1 个答案:

答案 0 :(得分:0)

我按照here的方法,通过扩展PluginController而不是UmbracoApiController来完成类似的工作。