C# ASP.Net Core MVC在按下特定按钮时禁用验证

C# ASP.Net Core MVC在按下特定按钮时禁用验证,c#,asp.net-core-mvc,unobtrusive-validation,asp.net-core-3.1,C#,Asp.net Core Mvc,Unobtrusive Validation,Asp.net Core 3.1,我的表单上有两个按钮,一个提交和保存按钮。我希望在用户单击“保存”按钮时能够跳过所有验证。我已尝试将class=“cancel”,formnovalidate,formnovalidate=“formnovalidate”,disableValidation=“true”添加到“保存”按钮,但没有一个成功。任何帮助都太好了!我正在使用ASP.NETCore3.1 表格 <form asp-action="Request"> ... ... <input name="answer

我的表单上有两个按钮,一个提交和保存按钮。我希望在用户单击“保存”按钮时能够跳过所有验证。我已尝试将
class=“cancel”
formnovalidate
formnovalidate=“formnovalidate”
disableValidation=“true”
添加到“保存”按钮,但没有一个成功。任何帮助都太好了!我正在使用ASP.NETCore3.1

表格

<form asp-action="Request">
...
...
<input name="answer" type="submit" value="Submit" class="btn btn-primary" />
<input name="answer" type="submit" value="Save" class="btn btn-secondary" />
</form>
<partial name="_ValidationScriptsPartial" />

...
...

...
...
@节脚本{
}

首先,您需要知道,如果使用
\u validationscriptial
,它将生成如下html:

从以下位置生成cshtml:

<input asp-for="MyDate" class="form-control" />
2.查看(将
formnovalidate
添加到
save input
):

4.结果:
formnovalidate
属性只与HTML5验证有关,与此插件无关。如果您想要一个不触发验证的按钮,请尝试使用
type=“button”
而不是
type=“submit”
。这样就解决了问题!我也有一个内部RCL正在运行我没有意识到的验证。谢谢
<input asp-for="MyDate" class="form-control" />
<input class="form-control" type="date" data-val="true"
    data-val-required="The MyDate field is required."
    id="MyDate" name="MyDate" value="">
public class Test
{
    public int Id { get; set; }
    public string Name { get; set; }
}
@model Test
<form asp-action="Request">
    <div>
        Name:<input asp-for="Name" />
        <span asp-validation-for="Name" class="text-danger"></span>
    </div>
    <div>
        Id:<input asp-for="Id" />
        <span asp-validation-for="Id" class="text-danger"></span>
    </div>
    <input name="answer" type="submit" value="Submit" class="btn btn-primary" />
    <input name="answer" type="submit" value="Save" formnovalidate class="btn btn-secondary" />
</form>
@section Scripts {
    <partial name="_ValidationScriptsPartial" />
}
[HttpPost]
public IActionResult Request(Test test)
{
    if (!ModelState.IsValid)
    {
         ModelState.Clear();
         return View("Index");
    }
    return View("Index");
}