我有一个要求,我们允许用户访问URL而不登录到某一点。 例如:
OnlineBooking /服务。他们可以选择服务,这会填充视图模型,然后调出确认视图OnlineBooking / Confirm,允许用户添加电子邮件地址等。然后生成ViewModel。
我的问题是,我如何检查用户是否存在,如果存在。重定向到登录视图(帐户控制器 - 登录操作),允许他们登录,然后重定向回此操作而不会丢失此操作中的viewmodel?这可能是不可能的,如果不是我怎么能实现这一点? 谢谢你的任何建议。
示例:
public async Task<IActionResult> Confirm(BookingViewModel bookingViewModel)
{
try
{
var matchedUser = await _userManager.FindByEmailAsync(bookingViewModel.Email);
if (matchedUser == null) //User does not have an existing account, so register them.
{
//This is fine
}
else
{
//Need to redirect to login, then back to here without losing the viewmodel
}
}
答案 0 :(得分:1)
我的问题是,我如何检查用户是否存在,如果存在。重定向到登录视图(帐户控制器 - 登录操作),允许他们登录,然后重定向回此操作,而不会丢失此操作中的viewmodel
我个人的偏好是甚至不会重定向用户。如果您需要登录,请弹出一个对话框,要求他们登录。用户登录后(ajax),启用按钮继续..
答案 1 :(得分:0)
不确定这是否是最佳做法,但在重定向到登录页面之前将View Model存储在会话中呢?然后在确认操作开始时,检查该会话变量是否存在。
会话变量可以像这样设置:
Session["MyViewModel"] = viewModel;
并像这样检索:
MyViewModel viewModel = (MyViewModel)Session["MyViewModel"]