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