[英]ASP.NET Core Razor Pages Model State Is Not Valid & Model data is empty
I am new to ASP.NET core razor pages & while practising I am facing a problem related to ViewModel Binding in Core2.1 Razor Pages. 我是ASP.NET核心剃须刀页面的新手,在练习时我遇到与Core2.1 Razor Pages中的ViewModel Binding相关的问题。 When I post form data then it shows ModelState is invalid with empty data. 当我发布表单数据时,它表明ModelState与空数据无效。
Here is my Razor Page- 这是我的剃刀页-
<form id="KycForm" method="post" class="validate-modern wizard-wrap wizard-simple" enctype="multipart/form-data">
<div class="wizard-head d-none">
<h5>Step 1</h5>
<span>Personal Details</span>
</div>
<div class="wizard-content">
<div class="row">
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">Email <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="Email" type="text" data-msg="Required" name="dob" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="Email" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">First Name <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="FirstName" type="text" data-msg="Required" name="dob" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="FirstName" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">Last Name <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="FirstName" type="text" data-msg="Required" name="dob" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="FirstName" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-12">
<h5 class="font-mid">Upload Here Your Passport Copy</h5><p></p>
<div class="gaps-2x"></div>
</div>
</div>
<div class="row">
<div class="col-12">
<div class="row align-items-center">
<div class="col-md-6">
<div class="input-item input-with-label">
<div class="relative">
<em class="input-file-icon fas fa-upload"></em>
<input type="file" asp-for="UploadPOIF" class="input-file required" data-msg="Required" id="filePass">
<label for="filePass">Choose a file</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
I am using Jquery to Submit the form as we are using a predefined submit hyper link of jquery-steps(jquery-steps.com), unable to change it to button. 我正在使用Jquery提交表单,因为我们使用的是jquery-steps(jquery-steps.com)的预定义提交超链接,无法将其更改为button。 Here is my jquery submit button code, which is working- 这是我的jquery提交按钮代码,可以正常工作-
$(function () {
$('a[href="#finish"]').click(function () {
$('form#KycForm').submit();
});
});
PageModel- PageModel-
public class TestModel : PageModel
{
[BindProperty]
public IFormFile UploadPOIF { get; set; }
[BindProperty, Required, EmailAddress, StringLength(256, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 4)]
public string Email { get; set; }
[BindProperty, Required]
public string FirstName { get; set; }
[BindProperty, Required]
public string LastName { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (ModelState.IsValid)
{
await UploadPhoto();
}
return Page();
}
}
But My ModelState.IsValid returns false & with out data in ViewModel. 但是My ModelState.IsValid返回false且ViewModel中没有数据。 Despite posting data in fields, field data is not available on PageModel including Invalid ModelState. 尽管在字段中发布了数据,但字段数据在PageModel上不可用,包括无效的ModelState。 My questions is about what is causing this issue is it the issue with jJquery form submission or I am missing something? 我的问题是什么引起了这个问题,是jJquery表单提交的问题还是我遗漏了什么?
Input tag helper generates id
and name
HTML attributes for the expression name specified in the asp-for
attribute. 输入标签帮助程序为asp-for
属性中指定的表达式名称生成id
和name
HTML属性。
Eg: 例如:
<input asp-for="Email" />
generates: 产生:
<input id="Email" name="Email" />
You should remove name
attribute from input
element. 您应该从input
元素中删除name
属性。
Also, you are missing editor for property LastName
. 此外,您缺少属性LastName
编辑器。
...
<div class="row">
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">Email <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="Email" type="text" data-msg="Required" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="Email" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">First Name <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="FirstName" type="text" data-msg="Required" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="FirstName" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-md-6">
<div class="input-item input-with-label">
<label class="input-item-label">Last Name <span class="text-danger">*</span></label>
<input class="input-bordered required" asp-for="LastName" type="text" data-msg="Required" min="1920-01-01" max="2009-12-12">
<span asp-validation-for="LastName" class="text-danger"></span>
</div><!-- .input-item -->
</div>
<div class="col-12">
<h5 class="font-mid">Upload Here Your Passport Copy</h5><p></p>
<div class="gaps-2x"></div>
</div>
</div>
...
In your model you have specified fields validation like required, length check and email address. 在模型中,您指定了字段验证,例如必填,长度检查和电子邮件地址。 These making your model invalid, either remove these or fulfill their criteria. 这些使您的模型无效,请删除这些模型或满足其条件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.