ASP.NET 带有表单标签的核心 - 在提交时验证表单并阻止提交

ASP.NET Core with form tag - validate form onsubmit and prevent submission

我有一个 ASP.NET Core 2.0 项目,我在其中使用表单标签进行提交。现在我想在我的表单提交中添加一些客户端验证。所以我在表单上使用 onsubmit 标签,如下所示:

<form id="formId" asp-action="ActionName" onsubmit="validationFunction(Event)">

我有这样的功能:

function validationFunction(e) {
    //CheckStuff
    e.preventDefault();
}

现在,当我提交表单时,该功能会正确触发,但 e.preventDefault() 不会停止提交。 return false.

也没有

如何阻止提交完成?

PS。我知道当我完成验证时,我可能可以通过单击按钮并提交我的表单来处理这种情况,但我想知道为什么以上在 ASP.NET Core 中不起作用或者我缺少什么?

如果您想这样做 "correct" 并且最简单的方法是在 class 中设置验证,例如:

public class Movie
{
public int ID { get; set; }

[StringLength(60, MinimumLength = 3)]
[Required]
public string Title { get; set; }

[Display(Name = "Release Date")]
[DataType(DataType.Date)]
public DateTime ReleaseDate { get; set; }

[Range(1, 100)]
[DataType(DataType.Currency)]
public decimal Price { get; set; }

[RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
[Required]
[StringLength(30)]
public string Genre { get; set; }

[RegularExpression(@"^[A-Z]+[a-zA-Z''-'\s]*$")]
[StringLength(5)]
[Required]
public string Rating { get; set; }
}

https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/validation

JavaScript 甚至 HTML

应返回 onsubmit 属性并 return false 以防止提交。

<form id="formId" asp-action="ActionName" onsubmit="return validationFunction(Event)">