【问题标题】:Passing model data onto another view [duplicate]将模型数据传递到另一个视图[重复]
【发布时间】:2018-09-18 15:08:25
【问题描述】:

所以我试图在这里关注多个线程来做我想做的事情,到目前为止,这一切似乎都与单例有关,我认为这对于我的问题来说有点过分了.

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

我怎样才能解决这个问题,而不是到处传递模型,或者只有一个单例?

【问题讨论】:

  • 看报错信息!有明确的指示必须做什么!
  • @TanvirArjel 但我该如何解决呢?我知道错误是什么,并且我已经尝试了一千种方法来修复它。但我不确定如何将正确的模型传递给它?
  • 希望明天我能帮助你。我的国家现在是午夜。
  • Index.cshtml 页面上定义的模型应该是 IndexViewModel 类型。
  • @Sandhya 我的 Index.cshtml 顶部已经有了以下内容,“@model ClientSideProgramming.Models.IndexViewModel”

标签: asp.net asp.net-mvc model asp.net-identity renderaction


【解决方案1】:

我认为你应该这样做

return RedirectToAction("Index");

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

【讨论】:

  • 重点是我试图将索引作为部分视图包含在我的仪表板中,这样我就可以使用 JavaScript 来同时显示索引以及其他页面跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 1970-01-01
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多