我有一个包含 2 个字段的模型,两者都不是必需的(不使用 [必需] 标签(。
在剃刀页面上,我包含了不显眼的jquery验证js文件。当我不填写任何值并发布表单时,我收到一个错误(客户端(,要求我的表单中的最后一个字段是必需的。
我已经搜索但没有发现类似的问题,因为模型/视图模型中没有必需的标签,那么为什么客户端需要这个标签。
[更新 1 :代码已添加]
型:
public class AppUser: IdentityUser
{
public string Name { get; set; }
public int Deposit { get; set; }
}
视图:
<form method="post">
<div class="form-group">
<label asp-for="@Model.AppUser.Deposit" class="control-label"></label>
<input asp-for="@Model.AppUser.Deposit" type="text" class="form-control" />
<span asp-validation-for="@Model.AppUser.Deposit" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="@Model.AppUser.Email" class="control-label"></label>
<input asp-for="@Model.AppUser.Email" type="text" class="form-control" />
<span asp-validation-for="@Model.AppUser.Email" class="text-danger"></span>
</div>
</form>
控制器:
public class SomeModel : PageModel
{
private readonly ApplicationDbContext _context;
private readonly UserManager<AppUser> _userManager;
[BindProperty]
public AppUser AppUser { get; set; }
public SomeModel(ApplicationDbContext context, UserManager<AppUser> userManager)
{
_context = context;
_userManager = userManager;
}
public async Task<IActionResult> OnGetAsync()
{
//..some action
return Page();
}
public async Task<IActionResult> OnPostAsync()
{
//..some action
return Page();
}
}
默认情况下,不可为空的类型,如int
、double
、byte
、...是必需的,如果您希望它们是可选的,则必须使用可为空的类型,例如int?