情况:由dotnet new webapp
创建的项目
“我的剃刀页面”页面正在使用服务器端验证,即ModelState
相应地返回了正确的值。
根据this,我是否正确地读到我要做的就是添加以下两个脚本(除了_layout中已有的jQuery),以便客户端验证起作用?
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
我尝试过,但没有进行客户端验证。开发人员工具显示脚本加载正常,没有运行时脚本错误。
除了链接中显示的属性外,HTML是否还需要其他属性?
我在Index.cshtml
中的HTML是:
<form method="post">
<div class="form-group">
<label for="userId">User id: </label>
<input type="text" name="userId" class="form-control" />
<span asp-validation-for="userId" class="text-danger" />
</div>
<div class="form-group">
<label for="password">Password: </label>
<input type="password" name="password" />
<span asp-validation-for="password" class="text-danger" />
</div>
<input type="submit" id="submit" value="Enter" />
</form>
@section Scripts {
//jQuery loads before this
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.16.0/jquery.validate.min.js"></script>
<script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
}
Index.cshtml.cs
是:
public class IndexModel : PageModel
{
[Required]
public string userId { get; set; }
[Required]
public string password { get; set; }
public ActionResult OnGet()
{
return Page();
}
public async Task<IActionResult> OnPostAsync(IndexModel model)
{
if (!ModelState.IsValid) //works fine
return RedirectToPage("/notvalid");
...
}