c# - ASP.Net Core MVC 在按下特定按钮时禁用验证
问题描述
我的表单上有 2 个按钮,一个提交和保存按钮。当用户单击“保存”按钮时,我希望能够跳过所有验证。我尝试将class="cancel"
, formnovalidate
, formnovalidate="formnovalidate"
,添加disableValidation="true"
到保存按钮,但它们都不起作用。任何帮助都会很棒!我正在使用 ASP.NET Core 3.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" />
解决方案
首先,你需要知道,如果你使用_ValidationScriptsPartial
,它会生成如下的 html:
从以下位置生成 cshtml:
<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="">
formnovalidate
和class="cancel"
属性可以跳过客户端的验证,但不能跳过服务器端的验证。
要解决此类问题,您可以清除模型状态:
1.型号:
public class Test
{
public int Id { get; set; }
public string Name { get; set; }
}
2.查看(添加formnovalidate
到save input
):
@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" />
}
3.动作:
[HttpPost]
public IActionResult Request(Test test)
{
if (!ModelState.IsValid)
{
ModelState.Clear();
return View("Index");
}
return View("Index");
}
推荐阅读
- swift - 货币格式化程序:尊重区域设置偏好,但始终将货币代码向右移动 - 简化代码
- lotus-domino - Lotus Domino Designer - 对话框列表公式 - 如何按字母顺序显示选项?
- jquery - jquery bootstrapValidator:多个输入值的总和,如果不等于其他输入字段,则禁用提交按钮
- android - 强制应用程序为 64 位设备运行 32 位架构?
- python-3.x - python3中奇怪的多继承
- javascript - 为什么函数声明中的常量声明不会引发错误?
- c# - 在后面的代码中添加文本后没有事件触发
- python - 如何在python中创建包含对象的列表
- php - 来自数据库的 HTML_TO_DOC() 循环表
- architecture - 有限状态机和舞台事件驱动架构有什么区别