【发布时间】:2023-01-27 09:53:56
【问题描述】:
在剃须刀页面上,我有两个“提交”类型的按钮。
第一个按钮用于向本地表添加数据,第二个按钮用于添加数据库中的所有列。
我想阻止第一个按钮检查字段的有效性,只有第二个按钮检查字段。
如何防止第一个按钮检查字段的有效性?
(ASP.NET 核心)
【问题讨论】:
标签: asp.net-core validation razor-pages
在剃须刀页面上,我有两个“提交”类型的按钮。
第一个按钮用于向本地表添加数据,第二个按钮用于添加数据库中的所有列。
我想阻止第一个按钮检查字段的有效性,只有第二个按钮检查字段。
如何防止第一个按钮检查字段的有效性?
(ASP.NET 核心)
【问题讨论】:
标签: asp.net-core validation razor-pages
将 formnovalidate 添加到第一个按钮输入。而formnovalidate属性可以跳过客户端的验证,但不能跳过服务器端的验证。所以你可以清除模型状态以跳过服务器端的验证。
下面是一个mvc demo,大家可以参考一下。
自定义.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");}
}
结果:
【讨论】:
我相信有很多方法可以处理这个......
您可以使用不同的按钮指向不同的控制器,其中一个就像此链接中一样,您可以使用其中的不同方法。检查一下。我希望这有帮助。
【讨论】:
您可以像下面这样创建这两个按钮。
type="submit" 按钮被触发时,发送请求。在另一种情况下,可以执行 get 请求,您可以在与 get 相关的操作方法中编写代码。
<button type="submit" class="btn btn-success" asp-action="Create" asp-controller="Category">Submit</button>
<a class="btn btn-success" asp-controller="Category" asp-action="Index" >Back</a>
【讨论】: