我正在使用Asp.Net身份邏輯模塊進行身份驗證過程。我在一個視圖中使用this主題進行登錄和註冊以及外部登錄。在一個剃鬚刀視圖中的兩種強類型局部視圖
這裏是包含社會登錄,註冊和登錄諧音
@using Helping.ViewModels
@{
ViewBag.Title = "Log in";
}
<div class="container">
<div class="row">
<br />
<br />
<div class="col-lg-4">
<div>
<section id="socialLoginForm">
@Html.Partial("_ExternalLoginsListPartial", new ExternalLoginListViewModel { Action = "ExternalLogin", ReturnUrl = ViewBag.ReturnUrl })
</section>
</div>
</div>
<div class="col-lg-4">
<h2><b>Sign Up</b></h2>
<hr />
@Html.Partial("Register")
</div>
<div class="col-lg-4">
<h2><b>Log In</b></h2>
<hr />
@Html.Partial("LocalLogin")
</div>
</div>
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
locallogin的和註冊是強類型的局部views.Problem是,當我試圖與亙古不變的用戶登錄我Login.cshtml視圖存在返回的模式,這裏是行動
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (ModelState.IsValid)
{
var user = await UserManager.FindAsync(model.UserName, model.Password);
if (user != null)
{
if (!await UserManager.IsEmailConfirmedAsync(user.Id))
{
string callbackUrl = await SendEmailConfirmationTokenAsync(user.Id, "Confirm your account-Resend");
ViewBag.errorMessage = "You must have a confirmed email to log on.";
return View("Error");
}
else
{
await SignInAsync(user, model.RememberMe);
return RedirectToLocal(returnUrl);
}
}
else
{
ModelState.AddModelError("", "Invalid username or password.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
它返回以下錯誤 傳遞到字典的模型產品類型「Helping.ViewModels.LoginViewModel」的,但這種字典需要類型的模型項目「 Helping.ViewModels.RegisterViewModel」。
我註冊視圖預計RegisterViewModel和我locallogin的預計LoginViewModel
@using Helping.ViewModels
@model LoginViewModel
@model HelpingHands.ViewModels.RegisterViewModel
如何同時提供一個視圖模型需要幫助嗎?
您還沒有提供足夠的信息(您甚至沒有指出您所顯示的視圖中的模型是什麼),但錯誤信息是自我解釋的。最好的猜測是'@ Html.Partial(「Register」)'預計一個模型是'RegisterViewModel' –
參見編輯答案 –
然後它需要是@@ Html.Partial(「Register」,new RegisterViewModel())' - 如果你沒有指定要傳遞給partial的模型,它會傳遞當前的模型,即「LoginViewModel」(因此是錯誤)。但是,爲什麼你會在「登錄」表單的同一頁上有「註冊」表單? 「註冊」操作是一次性的 - 一旦用戶註冊了,他們再也不需要它了,所以你只需通過渲染不必要的額外html來降級你的應用程序(並且弄亂用戶) –