ASP.net Core Razor页面中的登录模式



我想创建一个asp.net core razor pages(不是MVC)程序,它的一些功能,如登录,忘记密码等。我创建了一个razor页面,用于登录,其中包含一个引导模态和一个链接,用于在前端打开模态,并在后端创建LoginViewModel和RegistrationServices。如何使用此页面访问所有页面的登录模式?我可以使用局部视图吗?如何?否则,解是什么?这是_Login:

public class _LoginModel : PageModel
{
private readonly ICookieAuthenticationService _cookieAuthenticationService;
private readonly IUserRegistrationService _userRegistrationService;
private readonly IUserService _userService;
public _LoginModel(ICookieAuthenticationService cookieAuthenticationService,
IUserRegistrationService userRegistrationService,
IUserService userService)
{
_cookieAuthenticationService = cookieAuthenticationService;
_userRegistrationService = userRegistrationService;
_userService = userService;
}
[BindProperty]
public LoginViewModel LoginViewModel { get; set; }
[TempData]
public string ErrorMessage { get; set; }

...
}

我从_Login中删除了@page,并注入了服务,并将其用于局部视图:

<partial name="_Login" model="new _LoginModel(cookieAuthenticationService, userRegistrationService, userService, logService)" />

但是现在post方法不工作了,因为删除了@page。

我想创建一个asp.net core razor pages(不是MVC)程序,它的一些功能,如登录,忘记密码等

部分页面是一个没有@page指令的Razor标记文件(.cshtml),但正如你提到的,如果你从_Login.cshtml中删除@page指令,这将导致Razor页面功能,如页面处理程序等,不再正常工作。

要实现在模态弹出窗口中显示登录等功能的要求,您可以使用额外的部分页面_LoginPartial.cshtml,并使其发布到_Login处理程序,如下所示。

@model _LoginModel
<div class="row">
<div class="col-md-4">
<section>
<form method="post" asp-page="_Login">
<h4>Use a local account to log in.</h4>
<hr />
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="LoginViewModel.Email"></label>
<input asp-for="LoginViewModel.Email" class="form-control" />
<span asp-validation-for="LoginViewModel.Email" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LoginViewModel.Password"></label>
<input asp-for="LoginViewModel.Password" class="form-control" />
<span asp-validation-for="LoginViewModel.Password" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Log in</button>
</div>
</form>
</section>
</div>
</div>

调用_LoginPartial

<partial name="_LoginPartial" model='...

更新:

在发布到新页面之前如何验证输入?如空密码或无效用户。

客户端验证可以帮助防止提交,直到表单有效。您可以在视图页面中使用以下代码,这将有助于添加支持客户端验证的所需脚本引用。

@section scripts{ 
<partial name="_ValidationScriptsPartial" />
}

最新更新