Передача данных из одной формы в метод действия другой формы в том же представлении - PullRequest
0 голосов
/ 22 мая 2018

У меня есть типизированное представление с именем AccountSetup.cshtml с двумя формами:

@model ViewModel 

@using (Html.BeginForm())
{       

// input form stuff
<input type="submit"  id="Submit"" />

}

@using (Html.BeginForm())
{

// other input form stuff
<input type="button" onclick="location.href='@Url.Action("CreateAccount", "AccountSetup")'" />
}

Первая форма отправляет данные методу this post, и это прекрасно работает.Однако, когда я отправляю вторую форму, которая идет в метод Get, я теряю данные модели.Разве TempData.Keep не сохранит все данные для всех сообщений обратно в контроллер?

[HttpPost]
public ActionResult AccountSetup(ViewModel AccountInfo)
{
        TempData["AccountInfo"] = AccountInfo;

        // writing to database
        TempData.Keep("AccountInfo");
        return View(AccountInfo);
}

[HttpGet]
public ActionResult CreateAccount(ViewModel AccountInfo)
{
        if (TempData["AccountInfo"] != null)
        {
            // functionality 
            var data = TempData["AccountInfo"] as ViewModel
        }

        return View();
}

1 Ответ

0 голосов
/ 22 мая 2018

Каждый запрос (get / put / post) полностью независим от следующего (представьте, что ваш код выполняется на кластере серверов), поэтому, поскольку вы храните некоторые данные «локально», они не будут существовать на следующемвызовите сервер (или один из других серверов в кластере).Определенный экземпляр TempData существует только на время действия AccountSetup.

Если вы хотите, чтобы что-то было в модели представления для CreateAccount, вам нужно будет использовать в своем представлении такие вещи, как @ Html.HiddenFor.

В действительности, вы бы хотели хранить толькоможет быть, «идентификатор учетной записи» в представлении и перезагрузите фактические данные из базы данных, так как вы не хотите «верить» во все, что клиент посылает вам, так как любой хакер сможет передать любые данные, которые им требуются, на ваш сервер, так что выДОЛЖЕН проверить все.

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