我是ASP.NET核心剃须刀页面的新手,在练习时我遇到与Core2.1 Razor Pages中的ViewModel Binding相关的问题。当我发布表单数据时,它表明ModelState无效,数据为空。
这是我的剃须刀页面-
UIView.animate(withDuration: 1, animations: {
yourLayer.opacity = 0
}, completion: {
yourLayer.removeFromSuperLayer()
})
我正在使用Jquery提交表单,因为我们使用的是jquery-steps(jquery-steps.com)的预定义提交超链接,无法将其更改为button。 这是我的jQuery提交按钮代码,可以正常工作-
<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>
PageModel-
$(function () {
$('a[href="#finish"]').click(function () {
$('form#KycForm').submit();
});
});
但My ModelState.IsValid返回false且ViewModel中没有数据。 尽管在字段中发布了数据,但字段数据在PageModel上不可用,包括无效的ModelState。我的问题是什么引起了这个问题,是jJquery表单提交的问题还是我遗漏了什么?
答案 0 :(得分:3)
输入标签帮助程序会为id
属性中指定的表达式名称生成name
和asp-for
HTML属性。
例如:
<input asp-for="Email" />
生成:
<input id="Email" name="Email" />
您应该从name
元素中删除input
属性。
而且,您缺少属性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>
...
答案 1 :(得分:0)
在模型中,您指定了字段验证,如必填,长度检查和电子邮件地址。这些使您的模型无效,请删除它们或满足其条件。