如何解决表单发布字段之一返回NULL .NET Core MVC
我有一个表格和一些要发布的字段。将模型发送到控制器方法后,除 Email Address 字段始终为NULL之外的所有参数均正常。我不知道我在做什么错。
Screenshot of The models is here
Screenshot of the controller and the method + the null fields are here
And the form i'm submitting is here
中注意,除电子邮件地址和密码确认以外,所有字段都可以!
[Key]
public int Id { get; set; }
[required]
[display(Name = "First Name")]
[MaxLength(20,ErrorMessage = "Firstname cannot be contain more tahn 20 characters")]
public string FirstName { get; set; }
[required]
[display(Name = "Last Name")]
[MaxLength(20,ErrorMessage = "Lastname cannot be contain more tahn 20 characters")]
public string LastName { get; set; }
[required]
[EmailAddress]
[display(Name = "Email Address")]
[MaxLength(40,ErrorMessage = "Email Address cannot contain more that 40 characters")]
public string EmailAddress { get; set; }
[required]
[display(Name = "Password")]
[MinLength(8,ErrorMessage = "Password must be atleast 8 characters")]
[MaxLength(16,ErrorMessage = "Password cannot contain more that 16 characters")]
public string Password { get; set; }
[required]
[display(Name = "Password Confirmations")]
[MinLength(8,ErrorMessage = "Password cannot contain more that 16 characters")]
public string PasswordConfirmation { get; set; }
注册控制器:
private readonly UserContext dbContext;
public SignupController(UserContext _dbContext)
{
this.dbContext = _dbContext;
}
public IActionResult Index()
{
return View();
}
//[HttpPost]
//[ValidateAntiForgeryToken]
public IActionResult createuser(User user)
{
// Check model validation
if (!ModelState.IsValid)
ViewBag.message = "AAAAA";
// Check duplication
if (dbContext.users.Any(e => e.EmailAddress == user.EmailAddress))
return ViewBag("Email address registered");
dbContext.Add(user);
dbContext.SaveChanges();
ViewBag.message = "The user " + user.FirstName + " " + user.LastName + " is saved successfully";
//return View();
return Content("Hi");
@model DataAccessLibrary.Models.User;
@{
Layout = "_Layout";
ViewBag.Title = "Sign up";
}
<!DOCTYPE html>
<html lang="en">
<head>
<Meta charset="UTF-8" />
<Meta name="viewport" content="width=device-width,initial-scale=1.0" />
<Meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Login Page - Product Admin Template</title>
</head>
<body>
<div class="container tm-mt-big tm-mb-big">
<div class="row">
<div class="col-12 mx-auto tm-login-col">
<div class="tm-bg-primary-dark tm-block tm-block-h-auto">
<div class="row">
<div class="col-12 text-center">
<h2 class="tm-block-title mb-4">Create your account</h2>
</div>
</div>
<div class="row mt-2">
<div class="col-12">
<form id="signup_form" name="signup_form" asp-action="createuser" asp-controller="Signup" method="post" class="tm-login-form">
<!-- Firstname - Start -->
<div class="form-group inline-input-container">
<label for="firstname">First Name</label>
<input name="firstname" type="text" class="form-control validate" maxlength="20" id="firstname" value="" asp-for="FirstName" required />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<!-- Firstname - End -->
<!-- Lastname - Start -->
<div class="form-group inline-input-container">
<label for="lastname">Last Name</label>
<input name="lastname" type="text" class="form-control validate" maxlength="20" id="lastname" value="" asp-for="LastName" required />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<!-- Lastname - End -->
<!-- Email - Start -->
<div class="form-group">
<label for="email">Email Address</label>
<input name="email" type="text" class="form-control validate" id="email" maxlength="40" value="" asp-for="EmailAddress" required />
<span asp-validation-for="EmailAddress" class="text-danger"></span>
</div>
<!-- Email - End -->
<!-- Password - Start -->
<div class="form-group mt-3 inline-input-container">
<label for="password">Password</label>
<input name="password" type="password" class="form-control validate" maxlength="16" id="password" value="" asp-for="Password" required />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<!-- Password - End -->
<!-- Confirm Password - Start -->
<div class="form-group mt-3 inline-input-container">
<label for="confirm_password">Confirm Password</label>
<input name="confirm_password" type="password" maxlength="16" class="form-control validate" id="confirm_password" asp-for="PasswordConfirmation" value="" required />
</div>
<!-- Confirm Password - End -->
<div class="form-group mt-4">
<button id="submission" type="submit" class="btn btn-primary btn-block text-uppercase">Sign up</button>
</div>
<b id="msg"></b>
</form>
<div class="form-group mt-4">
<a asp-action="Index" asp-controller="Home" class="btn btn-primary btn-block text-uppercase inline" style="width: 60%">Resend Confirmation?</a>
<a asp-controller="Home" asp-action="Login" class="btn btn-primary btn-block text-uppercase inline" style="width: 40%">Login</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
@section Scripts{
<script type="text/javascript">
//$('#submission').click(function () {
// var form = $("#signup_form");
// var url = form.attr("action");
// var formData = form.serialize();
// $.post(url,formData,function (data) {
// $("#msg").html(data);
// });
//})
</script>
}
解决方法
您正在通过使用'id'和'name'元素来覆盖属性名称。因此,“ asp-for”未用于正确呈现属性。 用于绑定工作:
<input type="text" class="form-control validate" maxlength="40" value="" asp-for="EmailAddress" required />
玩得开心!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。