ここで少し睡眠不足の実験..
私は最近 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);
}
}