В asp.net mvc 2: как получить доступ к данным поста http внутри конструктора любого контроллера - PullRequest
1 голос
/ 25 ноября 2010

Мой контроллер имеет абстрактный базовый контроллер.Я хочу получить доступ к данным публикации формы внутри конструктора абстрактного базового класса.Как мы можем это сделать?

public abstract class AppController : Controller  
{  
    public AppController()   
    {
        // request post data required here  
    }  
}  

public class ProductController : AppController  
{  
    public ProductController() {  }  
}  

Цель: обновление второго раскрывающегося списка при изменении первого раскрывающегося списка.Оба находятся на странице MASTER.

Приведенный выше код является одним из двух вариантов передачи данных на главную страницу:

  1. Добавьте использование ViewData во ВСЕ методы действия.
  2. Делайте это только в одном месте, используя абстрактный базовый контроллер - добавьте необходимые данные, используя ViewData, внутри своего конструктора и заставьте наш основной класс контроллеров реализовать этот абстрактный класс базового контроллера.Чтобы нам не нужно было добавлять данные для главной страницы во все методы действий.

1 Ответ

2 голосов
/ 25 ноября 2010

Я не знаю, какова ваша конечная цель с этим, но это то, что не рекомендуется делать в MVC.Объект Request еще не инициализирован в конструкторе контроллера.Вы можете попробовать использовать собственный HttpContext объект:

string foo = System.Web.HttpContext.Current.Request["foo"];

, но это очень плохо, и я бы никогда не рекомендовал вам это делать, поскольку теперь ваш контроллер связан со статическим собственным экземпляром HttpContext без какой-либо возможностимодульное тестирование.

Вместо того, чтобы использовать конструктор, вы можете переопределить метод Initialize вашего контроллера, где у вас будет доступ к контексту запроса, и вы сможете прочитать опубликованные данные:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);
    string foo = requestContext.HttpContext.Request["foo"];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...