Я использую логический модуль идентификации Asp.Net для процесса аутентификации. Я использую тему this для входа и регистрации и внешних подключений в одном представлении.Два сильно типа частичных представлений в одном виде бритвы
Вот мое мнение Login.cshtml, которые содержат социальную логин, регистрации и входа в систему обертоны
@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 является то, что, когда я пытаюсь Войти с пользователем, что оленья кожа существует, то он возвращает модель, здесь действие
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' –
см. Edit answer –
Тогда ему нужно будет' @ Html.Partial ("Register", new RegisterViewModel()) ' - если вы не укажете модель для перехода к частичной, она передаст текущую модель, которая является 'LoginViewModel' (отсюда и ошибка). Но почему у вас будет форма «Регистрация» на той же странице, что и форма «Войти»? Действие «Регистрация» - это один раз - когда пользователь зарегистрировался, он больше никогда не понадобится, поэтому вы просто унизите свое приложение (и запутаете пользователя), предоставив ненужный дополнительный html –