Метод расширения не работает, если я устанавливаю свойство контроллера в Action, работает в OnExecuting - PullRequest
1 голос
/ 09 июня 2010

У меня есть класс MyController, который наследуется от Controller, поэтому все мои контроллеры наследуются от MyController.

У меня есть свойство в MyController:

public class MyController : Controller
{
    public string SomeProperty {get;set;}
}

, если я устанавливаю это свойство в MyController'sВ методе OnExecuting мой метод расширения HtmlHelper работает нормально :

public static string SomeExtension(this HtmlHelper htmlHelper)
{
    StringBuilder sb = new StringBuilder();            
        string result = "";
    var controller = htmlHelper.ViewContext.Controller as MyController;
    if (controller != null)
    {
        result = controller.SomeProperty;
    }

       return result;
}

, он не работает, если в методе действия контроллера установлено значение SomeProperty.

Я думаю, потому что я выполняю 'как MyController' в методе расширения?

есть ли способ, чтобы он работал в обеих ситуациях?

IЯ использую значение SomeProperty для вывода на мои страницы просмотра.

Ответы [ 2 ]

2 голосов
/ 25 февраля 2011

Как насчет использования общего базового класса для всех ваших ViewModels, а затем в Html Helper, использовать отражение, чтобы получить значения из него?почему бы просто не передать свойство в Html Helper?

1 голос
/ 09 июня 2010

Не используйте свойства базового контроллера для передачи данных в представление.Я бы порекомендовал вам написать фильтр пользовательских действий и хранить данные внутри ViewData, который будет доступен везде.

...