Нельзя передавать динамические значения такому атрибуту.Все значения, передаваемые атрибуту в .NET, должны быть известны во время компиляции.Один из возможных обходных путей - извлечь это значение в пользовательской реализации атрибута, когда у вас есть доступ к контексту HTTP.
Что-то вроде:
[SexyAuthorize(RolesRouteParamName = "area")]
public class FormsController : Controller
{
...
}
и затем:
public SexyAuthorizeAttribute: AuthorizeAttribute
{
public string RolesRouteParamName { get; set; }
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (httpContext == null)
{
throw new ArgumentNullException("httpContext");
}
var roles = httpContext.Request.RequestContext.RouteData.Value[RolesRouteParamName];
// TODO: continue with the implementation...
...
}
}