[英]ASP.NET MVC Core 1.1.2 Sign-in Form Validation Error
我已经使用 ASP.NET MVC Core 1.1.2 构建了一个电子商务网站。 尽管我使用了正确的方法来实现 ASP.NET 身份验证,但我的客户有时(70% 的时间)会在登录表单中遇到错误。 我查看了他们如何填写表格以及他们的 ModelStates 是否有效。 他们提供的信息没有问题(或者有,但与模型状态无关)。 我提供了发生此错误的代码部分。 当出现错误时,页面会重定向到我在 else 语句中设置的 404 页面。 在此先感谢您的帮助。
如果条目有错误,我将重定向到错误页面的 AccountController.cs:
if (ModelState.IsValid && model.Agreed == "on")
{
User user = new User { UserName = model.Username, Email = model.Email, RoleSpecific = RoleSpecific.Client };
IdentityResult result = await _userManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await _userManager.AddToRoleAsync(user, "Client");
Client cli = new Client
{
UserID = user.Id,
HeardOf = model.HeardOf,
InstagramUsername = model.Instagram,
TelephoneNumber = model.Telephone,
TwitterUsername = model.Twitter,
University = model.University,
Surname = model.FullName.Split(' ').Last(),
Name = model.FullName.Substring(0, model.FullName.LastIndexOf(' ')),
Gender = (Gender)Enum.ToObject(typeof(Gender), Convert.ToInt32(model.Gender))
};
await _context.AddAsync(cli);
_context.SaveChanges();
var id = _context.Clients.Last().ID;
var cart = new Cart
{
ClientID = id
};
await _context.AddAsync(cart);
_context.SaveChanges();
string confirmationToken = _userManager.GenerateEmailConfirmationTokenAsync(user).Result;
string confirmationLink = Url.Action("ConfirmEmail", "Account", new { userid = user.Id, token = confirmationToken }, protocol: HttpContext.Request.Scheme);
var message = new MimeMessage();
message.From.Add(new MailboxAddress("unifrogtravel1@yandex.com"));
message.To.Add(new MailboxAddress(user.Email));
message.Subject = "Üyelik Onayı";
message.Body = new TextPart("html")
{
Text = "Sayın " + model.FullName + ",<br/> Kaydınızın Tamamlanması için aşağıdaki linke tıklamanız gerekmektedir.<br/><a href=\"" + confirmationLink + "\">Onaylama Linki</a>"
};
using (var client = new SmtpClient())
{
client.Connect("smtp.yandex.com", 465);
client.Authenticate("unifrogtravel1@yandex.com", "blapenplefe");
client.Send(message);
client.Disconnect(false);
}
return RedirectToAction("Index", "Home");
}
else
{
foreach (var error in result.Errors)
{
ModelState.AddModelError(string.Empty, error.Description);
}
}
}
return RedirectToAction("Err404", "Home");
}
注册ViewModel.cs:
namespace UnifrogBasicDeneme.ViewModels
{
public class RegisterViewModel
{
[Required]
public string Username { get; set; }
[Required]
[EmailAddress]
public string Email { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Confirm Password")]
[Compare("Password",ErrorMessage ="Yukaridaki sifre ile ayni degil")]
public string ConfirmPassword { get; set; }
[Required]
public string FullName { get; set; }
public string Gender { get; set; }
public string Twitter { get; set; }
public string Instagram { get; set; }
public string University { get; set; }
public string HeardOf { get; set; }
[Required]
[RegularExpression("^[0-9]+$")]
public string Telephone { get; set; }
public string Agreed { get; set; }
}
报名表格:
<form id="signupForm" method="Post" action="Account/Register">
<div class="form-group-lg">
<input type="text" name="UserName" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Kullanıcı Adı">
</div>
<div class="form-group-lg">
<input type="email" name="Email" class="form-control bg-ash" id="exampleInputPassword1" placeholder="Email">
</div>
<div class="form-group-lg">
<input type="password" name="Password" class="form-control bg-ash" id="exampleInputPassword1" placeholder="Şifre">
</div>
<div class="form-group-lg">
<input type="password" name="ConfirmPassword" class="form-control bg-ash" id="exampleInputPassword1" placeholder="Şifre Tekrar">
</div>
<br />
<p>Kullanıcı Bilgileri</p>
<div class="form-group-lg">
<input type="text" name="FullName" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Adınız Soyadınız">
</div>
<div class="form-group-lg">
<select class="form-control bg-ash" id="exampleInputEmail1" placeholder="Cinsiyet">
<option value="1">Kadın</option>
<option value="0">Erkek</option>
<option value="2">Diğer</option>
</select>
</div>
<div class="form-group-lg">
<input type="text" name="Twitter" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Twitter">
</div>
<div class="form-group-lg">
<input type="text" name="Instagram" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Instagram">
</div>
<div class="form-group-lg">
<input type="text" name="University" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Üniversite">
</div>
<div class="form-group-lg">
<input type="text" name="HeardOf" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Kimden Duydunuz">
</div>
<div class="form-group-lg">
<input type="text" name="Telephone" class="form-control bg-ash" id="exampleInputEmail1" placeholder="Cep Telefonunuz">
</div>
<div class="checkbox">
<label>
<input type="checkbox" name="Agreed"> <a href="~/img/logo/unifrog.png">Unifrog Şartlarını Okudum Kabul Ediyorum</a>
</label>
</div>
<h5>Giriş yapabilmek için emailinize gelen doğrulama linkine tıklamanız gerekmektedir.</h5>
<button type="submit" class="btn btn-default">Kaydol</button>
</form>
您应该返回带有模型和模态错误的视图。 所以你的函数的结尾应该是这样的
return View("register",model);
代替
return RedirectToAction("Err404", "Home");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.