Я изучил большинство подобных вопросов, но не нашел ответа! Позвольте мне заявить, что я могу определить простой TempData, например строку int, и успешно получить его в другом методе действия, но
У меня есть 3 параметра / переменная в ActionMethod1, которая называется «ExternalLoginCallBack», и мне нужно спросить «UserName» от пользователя на стороне клиента, а затем сохраните все 4 параметра в ActionMethod2, который называется «CreateExternalUser». Это то, что у меня есть. AskUserNameView_NoActionMethod.cs html, как показано ниже:
@model ExternalUserViewModel
<form asp-action="CreateExternalUser" asp-controller="Account" method="post">
<label asp-for="UserName">Input your UserName Here: </label>
<input asp-for="UserName" >
<input type="submit" value="ُSubmit"/>
</form>
(с использованием TempData) Attemp-No 1:
public async Task<IActionResult> ActionMethod1
//some codes here
var externalLoginInfo = await _signInManager.GetExternalLoginInfoAsync();
TempData["externalLoginInfo"] = externalLoginInfo;
TempData["email"] = email;
TempData["returnUrl"] = returnUrl;
return View("AskUserNameView_NoActionMethod");
, но вместо отображения AskUserNameView_NoActionMethod.cs html он показывает просто белая страница без ошибок, без исключения и ничего:
Attemp-No2: я удалил тип «ExternalLoginInfo», и осталось только две простые строки в качестве объекта для передачи ActionMethod2:
public async Task<IActionResult> ActionMethod1
//some codes here
var externalUserViewModel= new ExternalUserViewModel()
{
Email = email,
ReturnUrl = returnUrl,
};
TempData["externalUserViewModel"] = externalUserViewModel;
return View("AskUserNameView_NoActionMethod");
, но снова появилась белая страница выше. Когда я удаляю сложный TempData, мой AskUserNameView_NoActionMethod.cs html успешно отображается, и я могу передать UserName, которое вводится клиентской стороной, в ActionMethod2. Но без 3 других параметров, необходимых для создания нового внешнего пользователя !!
Моя модель ExternalUserViewModel выглядит следующим образом:
public class ExternalUserViewModel
{
public ExternalLoginInfo ExternalLoginInfo { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string ReturnUrl { get; set; }
}
и уже добавил эти коды в startup.cs:
services.AddControllersWithViews();
services.AddSingleton<ITempDataProvider, CookieTempDataProvider>();
app.UseSession();
Если TempData не подходит, я попытался пройти моя модель с 3 параметрами (электронная почта, ReturnUrl, ExternalLoginInfo) для строго типизированного AskUserNameView_NoActionMethod.cs html, но снова имя пользователя, введенное на стороне клиента, электронная почта и returnUrl переданы в ActionMethod2, но externalLoginInfo был нулевым.
Резюме: нужен пример для передачи сложных данных / объекта из actionmethod1 в actionmethod2 без перенаправления на actionmethod2 !!