C #: анонимный тип в качестве параметра для ActionFilterAttribute - PullRequest
2 голосов
/ 19 августа 2010

Я хотел бы определить следующий атрибут в MVC2:

public class BackAttribute : ActionFilterAttribute
{
   public BackAttribute(object routeDict)
   { // Set local route property according to routeDict }
}

Атрибут будет использоваться следующим образом с анонимным типом:

[Back(new { action = "Index", controller = "Home" })]
public ViewResult DoSome() ...

То, что я пытаюсь достичь, это "назадmsgstr "атрибут, который определяет, куда приведет кнопка" назад "на странице.Предыдущий код не компилируется, потому что, по-видимому, это константное выражение, и в нем нельзя использовать анонимный тип.Как я могу передать анонимный тип в атрибут или выполнить один из следующих вызовов:

[Back(new { action = "Index", controller = "Home"})]
[Back(action = "Index", controller = "Home")]

(обновление) или даже

[Back(action = "Index", controller = "Home", id = "5", younameit = "dosome")]

Ответы [ 2 ]

1 голос
/ 19 августа 2010

Как уже упоминалось, вы не можете передать анонимный тип.

Что вы можете сделать, это:

public class BackAttribute : ActionFilterAttribute
{
    public string Action { get; set; }
    public string Controller { get; set; }

    public BackAttribute() { }
}

Что позволит вам сделать это:

[Back(Action = "Index", Controller = "Home" )]
public ViewResult DoSomething() { //...

Но вы все равно не сможете произвольно добавлять другие свойства.

0 голосов
/ 19 августа 2010

Вы не можете. Как вы заметили, параметры атрибута должны быть константами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...