Как передать данные ViewData во все представления в моем контроллере? - PullRequest
0 голосов
/ 01 сентября 2009

У меня есть выпадающий список, в котором выберите значение

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Screenname(FormCollection collection)
    {
        Viewdata["screenname"] = collection[0];

        return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] });
    }

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

   [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection collection, string screenname)
    {
        try
        {
            /// thats my dataobject which creates 

            DataObj.SaveData(Guid.Empty, collection, screenname);

            return RedirectToAction("Index", new { ScreenName = ViewData["screenname"] });
        }
        catch
        {
            return View("Error");
        }
    }

где индекс выглядит так ...

    public ActionResult Index(string ScreenName)
    {
        ///thats my list 
        GetTable = new GetDataTable(ScreenName);

        return View(GetTable);
    }

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

Ответы [ 3 ]

2 голосов
/ 01 сентября 2009

Объект ViewData специфичен для конкретного выполняемого действия. Для передачи данных между действиями используйте TempData. подробнее о разница между двумя в MSDN.

Вы также можете напрямую писать в состояние сеанса через свойство Controller.Session.

1 голос
/ 01 сентября 2009

Здесь на самом деле это часто освещалось. Решением на данный момент является использование TempData для сохранения необходимых данных перед использованием RedirectToAction ().

Если вы выполните поиск по запросу «RedirectToAction», вы найдете несколько сообщений, охватывающих эту тему, , например, эту .

Следующий официальный выпуск фреймворка исправит это.

0 голосов
/ 02 сентября 2009

Я использовал представление для получения данных от пользователя, а затем сохранил их в статическую переменную, а затем использовал эту переменную для передачи данных во все другие представления.

Спасибо в любом случае

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