【发布时间】:2020-10-18 11:54:53
【问题描述】:
我有一个注册表单,它使用比较属性来比较密码并确认密码。当我输入不同的密码时,它会执行应有的操作并显示“密码不匹配”。当我点击提交按钮并“发布”它时,问题就出现了。我在 ModelState 无效的“if (!ModelState.IsValid)”处打了一个断点。当它重新加载曾经显示“密码不匹配”的页面时,它现在显示“找不到名为密码的属性”。我尝试按照this post 所说的尝试输入答案的代码。它返回的只是错误为“null”。 剃刀页面:
@page
@model ThinBlueLie.Pages.RegisterModel
@{
ViewBag.Title = "Register";
}
<div class="container-fluid h-100 row nogap">
<div class="card border-secondary mx-auto center col-lg-3 col-md-4 p-0" style="margin-top:100px;">
<div class="card-header">
Register
<a class="float-right" asp-page="/Login">Login</a>
</div>
<form method="post">
<div class="card-body text-secondary">
<div class="form-group">
<label asp-for="Users.Email" class="control-label">Email</label>
<input type="email" asp-for="Users.Email" class="form-control">
<span asp-validation-for="Users.Email" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password"class="control-label"></label>
<input asp-for="Password" type="password" class="form-control" >
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ConfirmPassword" class="control-label"></label>
<input type="password" asp-for="ConfirmPassword" class="form-control">
<span asp-validation-for="ConfirmPassword" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Users.Username" class="control-label"></label>
<input type="text" asp-for="Users.Username" class="form-control">
<span asp-validation-for="Users.Username" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Register" class="btn btn-primary mb-1" style="float:right" />
</div>
</div>
</form>
<div class="card-footer">
<a>Log in with Google</a>
</div>
</div>
</div>
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
页面模型:
namespace ThinBlueLie.Pages
{
public class RegisterModel : PageModel
{
private readonly DataAccessLibrary.thinblue.ThinbluelieContext _context;
public RegisterModel(DataAccessLibrary.thinblue.ThinbluelieContext context)
{
_context = context;
}
public IActionResult OnGet()
{
return Page();
}
public Users Users { get; set; }
[BindProperty]
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required]
[BindProperty]
[DataType(DataType.Password)]
[Display(Name = "Confirm Password")]
[Compare("Password", ErrorMessage = "Passwords do not match")]
public string ConfirmPassword { get; set; }
// To protect from overposting attacks, enable the specific properties you want to bind to, for
// more details, see https://aka.ms/RazorPagesCRUD.
public async Task<IActionResult> OnPostAsync()
{
var errors = ModelState.Values.SelectMany(v => v.Errors);
if (!ModelState.IsValid)
{
return Page();
}
_context.Users.Add(Users);
await _context.SaveChangesAsync();
return RedirectToPage("./Index");
}
}
}
型号:
namespace DataAccessLibrary.thinblue
{
public partial class Users
{
public int IdUsers { get; set; }
[BindProperty]
public string Username { get; set; }
[BindProperty]
[Required]
[EmailAddress]
public string Email { get; set; }
public string Password { get; set; }
}
}
【问题讨论】:
标签: c# asp.net-core razor razor-pages