将模型数据传递到另一个视图[重复]

问题描述 投票:0回答:1

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

我正在尝试执行以下操作:我有登录异步任务,当用户登录部分视图时执行,然后将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'的模型项。

我怎样才能解决这个问题,而不是最终传递模型,或者拥有单身?

asp.net asp.net-mvc model asp.net-identity renderaction
1个回答
0
投票

我想你应该这样做

return RedirectToAction("Index");

当您成功登录时,而不是return View("Dashboard")

© www.soinside.com 2019 - 2024. All rights reserved.