属性路由 - 包含IRouteConstraint消耗的参数中的正斜率?

时间:2013-10-13 20:54:13

标签: asp.net-mvc attributerouting route-constraint

我尝试使用基于属性的路由 - 它看起来很棒,但我遇到了一个问题。

我已经搜索了文档(attributerouting.net)和SO,但我无法弄清楚如何使用自定义路由约束并传入包含正斜杠的参数。例如。一个URL。

控制器上的属性:

    [GET("{url:CustomURLConstraint}")]
    public ActionResult DisplayByURL(string url)
    {
        ...
    }

IRouteConstraint:

public class CustomURLConstraint: IRouteConstraint
{
    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        string urlToTest = values[parameterName].ToString();
        ....test for url here...
    }
}

这很好....除非URL包含正斜杠,它给我一个404。

所以我在路线参数中添加了星号,如下所示:

    [GET("{*url:CustomURLConstraint}")]
    public ActionResult DisplayByURL(string url)
    {
        ...
    }

但现在我无法访问IRouteConstraint类中的值。

在CustomURLConstraint的匹配方法中,values[parameterName]的值来自于所有明星 - *url

路由值按预期使用actioncontroller,但密钥url为null。没有*url密钥。

0 个答案:

没有答案