ASP.NET 按下按钮时核心禁用验证

ASP.NET Core disable validation when button is pressed

在剃须刀页面上,我有两个 'submit' 类型的按钮。

第一个按钮用于向本地添加数据table,第二个按钮用于添加数据库中的所有列。

我想防止第一个按钮检查字段的有效性,只有第二个按钮检查字段。

如何防止第一个按钮检查字段的有效性?

(ASP.NET核心)

我相信有很多方法可以解决这个问题...

您可以使用不同的按钮指向不同的控制器,其中一个就像这个 link 并且您可以使用其中的不同方式。检查一下。希望对您有所帮助。

formnovalidate 添加到第一个按钮输入。而 formnovalidate 属性可以跳过客户端的验证,但不能跳过服务器端的验证。所以你可以清除模型状态以跳过服务器端的验证。 下面是一个mvc demo,大家可以参考一下。

Custom.cs:

public class Custom
    {
        public string name{ get; set; }
        public int Id { get; set; }        
    }

在HomeController.cs中:

 public IActionResult Submit()
        {
            return View();
        }
        [HttpPost]
        public IActionResult Submit(Custom custom)
        {
            if (!ModelState.IsValid)
            {
                ModelState.Clear();//clear model state to skip validation in server side
                return View("Submit");
            }
            return View("Submit");
        }

查看:

@model nnnn.Models.Custom

@{
    ViewData["Title"] = "Submit";
}

<h1>Submit</h1>

<h4>Custom</h4>
<hr />
<div class="row">
    <div class="col-md-4">
        <form asp-action="Submit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group">
                <label asp-for="name" class="control-label"></label>
                <input asp-for="name" class="form-control" />
                <span asp-validation-for="name" class="text-danger"></span>
            </div>
            <div class="form-group">
                <label asp-for="Id" class="control-label"></label>
                <input asp-for="Id" class="form-control" />
                <span asp-validation-for="Id" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Create" formnovalidate class="btn btn-primary" />
                <input  type="submit" value="Save"  class="btn btn-secondary" />
            </div>
        </form>
    </div>
</div>

<div>
    <a asp-action="Index">Back to List</a>
</div>

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

结果: