0

我喜欢在视图中使用链接来指向区域中的 ApiController。我尝试了不同类型的注册。我尝试过不同的RouteLink. 没有成功。独立于我如何注册以及如何尝试获取链接,总是~/会返回。

注册:

        var route1 = context.Routes.MapHttpRoute(
            "IpixDictionary_api1",
            "ipixdic/api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional },
            new[] { "WinGD.AppCenter.Areas.IpixDictionary.Controllers" });

        var route2 = context.Routes.MapHttpRoute(
            "IpixDictionary_api2",
            "ipixdic/api/{controller}/{action}/{id}",
            new { id = RouteParameter.Optional },
            new[] { "WinGD.AppCenter.Areas.IpixDictionary.Controllers" });
        if (route2.DataTokens == null)
        {
            route2.DataTokens = new RouteValueDictionary();
        }
        route2.DataTokens.Add("area", context.AreaName);

使用RouteLink的重载:

        @Html.RouteLink("Test11", "IpixDictionary_api1", new { httproute = true, controller = "EnginesApi" })
        @Html.RouteLink("Test12", "IpixDictionary_api1", new { httproute = true, controller = "EnginesApi" }, null)
        @Html.RouteLink("Test13", "IpixDictionary_api1", new { httproute = true, controller = "EnginesApi", area = "IpixDictionary" })
        @Html.RouteLink("Test14", "IpixDictionary_api1", new { httproute = true, controller = "EnginesApi", area = "IpixDictionary" }, null)
        <br />
        @Html.RouteLink("Test21", "IpixDictionary_api2", new { httproute = true, controller = "EnginesApi" })
        @Html.RouteLink("Test22", "IpixDictionary_api2", new { httproute = true, controller = "EnginesApi" }, null)
        @Html.RouteLink("Test23", "IpixDictionary_api2", new { httproute = true, controller = "EnginesApi", area = "IpixDictionary" })
        @Html.RouteLink("Test24", "IpixDictionary_api2", new { httproute = true, controller = "EnginesApi", area = "IpixDictionary" }, null)
        <br />

没有区域一切正常,但不适用于区域。

有任何想法吗?

4

1 回答 1

0

找到了解决方案。API 控制器不需要在注册中执行操作 :-)

所以以下是我的解决方案:

context.Route.MapHttpRoute(
            "IpixDictionary_api",
            "ipixdic/api/{controller}/{id}",
            new { id = RouteParameter.Optional });

@Html.RouteLink("json", "IpixDictionary_api", new { httproute = true, controller = "EnginesApi" })
于 2015-06-05T08:04:44.750 回答