这里有点睡眠剥夺实验..
我最近一直在玩 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);
}
}