将模型数据传递到另一个视图



所以我试图在这里遵循多个线程来做我想要做的事情,到目前为止,这一切似乎都与单例有关,我认为这对我的问题来说有点过分的解决方案。

我正在尝试执行以下操作: 我有我的登录异步任务,当用户在部分视图中登录时执行,然后它将 LoginViewModel 作为参数,当成功登录时,会发生这种情况:

case SignInStatus.Success:
return RedirectToLocal(returnUrl);

之后,当我的用户单击"成员"部分时,如下所示:

@Html.ActionLink("Medlemsområde", "LoggedIn", "Home", null, new { @class = "login-field btn btn-primary" })

我的家用控制器看起来像这样

public ActionResult LoggedIn()
{
if (User.Identity.IsAuthenticated)
return View("Dashboard");
else
return View("Login");
}

我的仪表板如下所示

@{
Html.RenderAction("Index", "Manage");
}

然后我有我的管理控制器

public async Task<ActionResult> Index(ManageMessageId? message)
{
ViewBag.StatusMessage =
message == ManageMessageId.ChangePasswordSuccess ? "Dit password er blevet ændret."
: message == ManageMessageId.SetPasswordSuccess ? "Dit password er gemt."
: message == ManageMessageId.SetTwoFactorSuccess ? "Din to-faktor godkendelse er gemt."
: message == ManageMessageId.Error ? "Der skete en fejl."
: message == ManageMessageId.AddPhoneSuccess ? "Dit telefon nummer blev tilføjet."
: message == ManageMessageId.RemovePhoneSuccess ? "Dit telefon nummer blev fjernet."
: "";
var userId = User.Identity.GetUserId();
var model = new IndexViewModel
{
HasPassword = HasPassword(),
PhoneNumber = await UserManager.GetPhoneNumberAsync(userId),
TwoFactor = await UserManager.GetTwoFactorEnabledAsync(userId),
Logins = await UserManager.GetLoginsAsync(userId),
BrowserRemembered = await AuthenticationManager.TwoFactorBrowserRememberedAsync(userId)
};
return View(model);
}

每当我有

Html.RenderAction("Index", "Manage");

我收到以下错误:

传递到字典中的模型项的类型为 "ClientSideProgramming.Models.IndexViewModel",但是这个字典 需要类型的模型项 'ClientSideProgramming.Models.LoginViewModel'.

我怎样才能解决这个问题,而不会最终导致到处传递模型或拥有单例?

我认为你应该这样做

return RedirectToAction("Index");

而不是成功登录后return View("Dashboard")

相关内容

  • 没有找到相关文章

最新更新