ASP .NET Core Razor的模型验证绑定每次都需要回发给服务端进行检查?是不是有点浪费服务器。
我用的Demo如下:
<form method="POST">
<div>
<input asp-for="UserName" type="text" placeholder="用户名" />
<span asp-validation-for="UserName"></span>
</div>
<div>
<input asp-for="Password" type="password" placeholder="密码" />
<span asp-validation-for="Password"></span>
</div>
<button type="submit">登录</button>
</form>
==============================
Model端:
[BindProperty]
[Required(ErrorMessage = "用户名不能为空!")]
public string UserName { get; set; } = "";
[BindProperty]
[Required(ErrorMessage = "密码不能为空!")]
public string Password { get; set; } = "";
public IActionResult OnPostAsync()
{
if (ModelState.IsValid == true)
{
//搞点事情
}
return Page();
}
==============================
如果前端里用户名或者密码任意一项没填,都要发给服务端验证(调用OnPostAsync),然后才显示绑定失败警告(如“用户名不能为空!”),为什么不是设计在客户端验证成功才调用服务端?这是微软设计的问题还是我理解水平不够的问题@_@
你可以设置客户端验证,也可以关闭客户端验证,设置客户端验证之后,生成的前端代码像jquery就会有那些验证属性
刚查了一下,启用客户端验证是不是设置 <label class="control-label" 和 <input class="form-control" 这两部分?
@PER10: 你是不是没有引用jquery js文件
@不知道风往哪儿吹: 对,我再查查怎么做。
感谢!
一般正规一点,前端和后端都要验证,用户禁用js可能会跳过前端验证,但是后端验证跳不过去
这个有道理,我在其他地方看过这种说法。
有没有人
– PER10 4年前