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 に答える