我試圖在.NET 5.0 MVC中用身份資訊創建一個注冊,我的注釋有問題,特別是ViewModel中的Compare和Required。提交一個空的電子郵件欄位會重新加載頁面,無效的PW也是如此(6個字符,1個特殊,1個數字,1個大寫)。當控制器試圖在CreateAsync()中使用空的PW時,使用空的PW欄位提交會導致控制器的POST路由崩潰。
希望得到任何幫助。
以下是我的ViewModel
using System.ComponentModel.DataAnnotations;
namespaceTest.ViewModels
{
public class RegisterViewModel {
{
[] //似乎不起作用。
[] //這個可以。
[]。 // worked]
public string Email { get; set; }
[] //不作業。
[] //似乎沒有做什么。
[]。 // works] [//workshop
public string Password { get; set; }
[] //不作業。
[] //似乎沒有做什么。
[]。// worked]
[] //不作業。
//[Compare("Password")] 也不作業。
public string ConfirmPassword { get; set; }
}
這里是我的視圖
@using Test.ViewModels
@model RegisterViewModel
<h2>注冊一個新用戶</h2>
@使用(Html.BeginForm("Register", "Account"))
{
@Html.LabelFor(user => user.Email)
@Html.EditorFor(user => user.Email)
@Html.LabelFor(user => user.Password)
@Html.PasswordFor(user => user.Password)
@Html.LabelFor(user => user.ConfirmPassword)
@Html.PasswordFor(user => user.ConfirmPassword)
< input type="submit" value="Register" />
}
這里是控制器的帖子動作
[]
public async Task<ActionResult> Register(RegisterViewModel model)
{
var user = new ApplicationUser { UserName = model.Email };
IdentityResult result = await _userManager.CreateAsync(user, model.Password) 。
if (result.Succeeded)
{
return RedirectToAction("Index"/span>)。
}
else; }
{
return View()。
}
}
我已經嘗試了其他這些點擊率的SO答案,我沒有在其中找到解決方案,也許是因為它們已經有7-10年歷史了。
使用 ASP.NET MVC 資料型別屬性驗證電子郵件地址 - 這篇文章幫助解決了 [EmailAddress] 的問題,我使用了錯誤的 HTML Helper,所以它沒有驗證輸入。
使用 ASP.NET MVC 資料型別屬性驗證電子郵件地址uj5u.com熱心網友回復:
解決方案在@mohammad-mobasher發布的鏈接中,這個鏈接很有幫助。
我缺少的是在我的視圖中使用@Html.ValidationSummary(false),并在我的POST路由中用if (ModelState.IsValid){}來包裝代碼。@Html.ValidationSummary(false)檢查ViewModel屬性的驗證,并將在注冊頁面添加一個無序的串列,其中包括任何違反規定的情況,如果表單被提交并且模型狀態是無效的。
控制器的變化看起來是這樣的:
[]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid) // this is new {
{
ApplicationUser user = new ApplicationUser { UserName = model.Email };
IdentityResult result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
return RedirectToAction("Index"/span>)。
}
}
return View(model)。
}
和視圖:
@using Test.ViewModels
@model RegisterViewModel
<h2>注冊一個新用戶</h2>。
<hr />
@using (Html.BeginForm("Register"/span>, "Account"/span>, FormMethod.Post)
{
@Html.LabelFor(user => user.Email)
@Html.TextBoxFor(user => user.Email)
<!-- 改回TextBoxFor,現在Validation方法對這一點有效 -->
@Html.LabelFor(user => user.Password)
@Html.PasswordFor(user => user.Password)
@Html.LabelFor(user => user.ConfirmPassword)
@Html.PasswordFor(user => user.ConfirmPassword)
<input type="submit" value="Register" />
}
<!--添加了這個-->。
@Html.ValidationSummary(false)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309878.html
標籤:
上一篇:轉換為RDD失敗
