c# - ASP.net Core Razor 页面中的登录模式
问题描述
我想创建一个带有模式的asp.net核心剃须刀页面(不是MVC)程序,以实现它的一些功能,如登录、忘记密码等。我创建了一个剃须刀页面,用于使用引导模式登录和一个用于前端打开模式的链接和后端的 LoginViewModel 和 RegistrationServices。如何使用此页面访问所有页面中的登录模式?我可以使用局部视图吗?如何?否则,解决方案是什么?这是_登录:
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)" />
但是由于删除@page,post方法不起作用。
解决方案
我想创建一个带有模式的asp.net核心剃须刀页面(不是MVC)程序,以实现它的一些功能,如登录、忘记密码等。
部分页面是没有指令的Razor 标记文件 (.cshtml) @page
,但正如您所提到的,如果您@page
从 中删除指令_Login.cshtml
,这将导致 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" />
}
推荐阅读
- javascript - 如何使此循环仅在未找到所有匹配项时仅写入第二个
- r - 如何将多个子文件夹中的多个 fasta 文件导入列表列表
- javascript - 扫描线填充 - 如何确保覆盖整个多边形?
- c# - Powershell 尝试从使用“System.Runtime.Serialization.Json”的 cs 文件添加类型失败
- java - 更改属性文件的名称导致找不到它
- spring - Spring Data JPA 将动态列名作为参数传递给查询
- asp.net - 在会话状态模式下,在现实世界的应用程序中,Inproc、StateServer、Sqlserver 哪个更好?
- python - 如何读取扩展名为 a01 的文件
- c# - 在运行时获取 LOG 方法中的类名和方法名会导致任何性能问题吗?
- jenkins - 在多个 TFS 项目之间共享 Jenkins 凭据