используя ViewData через сообщения - PullRequest
0 голосов
/ 18 января 2012

У меня есть метод get и post для моего представления, а в методе get я устанавливаю значение нескольких объектов ViewData.Но когда я вызываю метод post, эти объекты ViewData становятся нулевыми.Нужно ли сбрасывать их в моем методе сообщения?Вот мой код:

public ActionResult Index()
    {
        ViewData["afceaststandings"] = GetStandingsForGrid("2017", "AFC East");
        ViewData["afccentralstandings"] = GetStandingsForGrid("2017", "AFC Central");
        ViewData["afcweststandings"] = GetStandingsForGrid("2017", "AFC West");

        return View("Index");
    }

[HttpPost]
    public ActionResult Index(QBRating qbm)
    {
        if (ModelState.IsValid)
        {
            string Result;
            double dblResult; 

            qbm.Completion = ((qbm.Completion - 30) * 0.05);

            if (qbm.Completion < 0)
            {
                qbm.Completion = 0;
            }

            if (qbm.Completion > 2.375)
            {
                qbm.Completion = 2.375;
            }

            qbm.Gain = ((qbm.Gain - 3) * 0.25);

            if (qbm.Gain < 0)
            {
                qbm.Gain = 0;
            }

            if (qbm.Gain > 2.375)
            {
                qbm.Gain = 2.375;
            }

            qbm.Touchdown = (qbm.Touchdown * 0.2);

            if (qbm.Touchdown > 2.375)
            {
                qbm.Touchdown = 2.375;
            }

            qbm.Interception = (2.375 - (qbm.Interception * 0.25));

            if (qbm.Interception < 0)
            {
                qbm.Interception = 0;
            }

            dblResult = Math.Round((((qbm.Completion + qbm.Gain + qbm.Touchdown + qbm.Interception) / 6) * 100), 2);

            Result = "QB Rating = " + Convert.ToString(dblResult);

            TempData["QBRating"] = Result;
        }

        //invalid - redisplay form with errors
        return View(qbm);
    }

Ответы [ 2 ]

1 голос
/ 18 января 2012

Да, значения нужно будет переназначить на ViewData в действии контроллера POST, так как ViewData не сохраняется в запросах.

Вы можете использовать TempData для сохранения данных для запроса (они сохраняются в ViewData до следующего обращения); По умолчанию ITempDataProvider (SessionStateTempDataProvider) использует SessionState, поэтому, в зависимости от того, какой тип хранилища сеансов вы используете, элементы, которые вы помещаете в TempData, могут нуждаться в сериализации.

0 голосов
/ 18 января 2012

Да. Объекты ViewData существуют только на время существования одного запроса. Таким образом, каждый запрос должен переустанавливать любые переменные, которые вам нужны.

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