2013-07-24 2 views
3

Я пытаюсь сделать что-то вроде этого:Как поместить массив enum в атрибут authorize?

[CustomAuthorize(Permissions = new[] { /*These are Enums */Permissions.CanChangeProducts.ToString(), Permissions.CanChangeNames.ToString()})] 
    public ActionResult MyMethod() 
    { 
     return View(); 
    } 

Это дает ошибку:

Ошибка 5 Аргумент атрибут должен быть константным выражением, TypeOf выражение создания выражение или массив типа параметра атрибута [...]

Мне удалось установить строку ресурса в validationattibutes, но я не мог бы поместить этот массив enum (string) в атрибут authorize ... Как я могу это сделать? Любая помощь будет оценена!

+0

Какого типа является разрешением? Все ошибки говорят, что это не String [] –

ответ

4
enum.Value | enum.Value | enum.Value 

Как насчет flags?

Как это:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Enum)] 

Edit: Кстати, есть очень интересный ответ: https://stackoverflow.com/a/270231/2524304

+0

Хорошо, я помещаю эти перечисления в переменную string [] внутри настраиваемого класса авторизации, который наследует authorizeAttribute ... Как я могу использовать флаг? Поскольку количество параметров, получаемых массивом «Разрешение», изменяется –

+0

Отредактировано, добавлена ​​ссылка на возможный ответ – FSou1

+0

Хорошо! Я пошел по ссылке, которую вы отправляете, и я получил ответ ... Мне просто пришлось поместить массив enum внутри класса, и это сработало! haha thanks ... Я все еще собираюсь использовать флаги для этого! –

Смежные вопросы