首页 新闻 会员 周边

ASP .NET Core Razor的模型验证绑定是不是有点浪费服务器?

0
悬赏园豆:10 [已解决问题] 解决于 2020-12-04 10:23

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),然后才显示绑定失败警告(如“用户名不能为空!”),为什么不是设计在客户端验证成功才调用服务端?这是微软设计的问题还是我理解水平不够的问题@_@

PER10的主页 PER10 | 初学一级 | 园豆:8
提问于:2020-12-04 05:10

有没有人

PER10 3年前
< >
分享
最佳答案
0

你可以设置客户端验证,也可以关闭客户端验证,设置客户端验证之后,生成的前端代码像jquery就会有那些验证属性

收获园豆:10
不知道风往哪儿吹 | 老鸟四级 |园豆:2035 | 2020-12-04 09:15

刚查了一下,启用客户端验证是不是设置 <label class="control-label" 和 <input class="form-control" 这两部分?

PER10 | 园豆:8 (初学一级) | 2020-12-04 09:24

@PER10: 你是不是没有引用jquery js文件

不知道风往哪儿吹 | 园豆:2035 (老鸟四级) | 2020-12-04 09:30

@不知道风往哪儿吹: 对,我再查查怎么做。

PER10 | 园豆:8 (初学一级) | 2020-12-04 09:32

感谢!

PER10 | 园豆:8 (初学一级) | 2020-12-04 10:22
其他回答(1)
0

一般正规一点,前端和后端都要验证,用户禁用js可能会跳过前端验证,但是后端验证跳不过去

刘下来 | 园豆:919 (小虾三级) | 2020-12-04 13:35

这个有道理,我在其他地方看过这种说法。

支持(0) 反对(0) PER10 | 园豆:8 (初学一级) | 2020-12-05 00:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册