对两个提交按钮使用不显眼的验证,对一个按钮不进行验证
Using unobtrusive validation with two submit buttons, with no validation for one
我目前有一个使用 MVC 5 的表单,带有两个 submit/post 按钮——一个用于完成表单(在其他验证中验证必填字段),一个用于保存表单(不需要真正的验证) .它在不包括不显眼的验证的情况下工作正常,但我想使用它......当我这样做时,最终确定按钮工作正常,但保存按钮就像它是最终确定按钮一样 - 在不应该验证字段时验证字段是。
有没有办法让这成为可能?
代码片段如下。
查看
{BeginForm code goes here}
@Html.LabelFor(model => model.TotalHours)
@Html.TextBoxFor(model => model.TotalHours)
@Html.ValidationMessageFor(model => model.TotalHours)
...
<input type="submit" value="Finalize" name="btnCreate" />
<input type="submit" value="Save and Quit" name="btnCreate" />
模型(使用 EF)
[Required(ErrorMessage = "Please enter the total number of hours.")]
[Display(Name = "Total Hours")]
public Nullable<decimal> TotalHours { get; set; }
控制器
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name = "btnCreate", Argument = "Finalize")]
public async Task<ActionResult> CreateFinalize(FormObj oForm)
{
using (var dbContext = new DBContext())
{
if (ModelState.IsValid) { ... }
else { return View(oForm); }
}
}
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name = "btnCreate", Argument = "Save and Quit")]
public async Task<ActionResult> CreateFinalize(FormObj oForm)
{
using (var dbContext = new DBContext())
{
// Remove model errors
foreach (var modelStateVals in ModelState.Values)
modelStateVals.Errors.Clear();
// Process the form and save here
}
}
我发现 html 中有您可以添加的内容:
<input class="cancel" />
不幸的是,取消 class 已被弃用。但现在它使用 formnovalidate,这正是我需要的。
我目前有一个使用 MVC 5 的表单,带有两个 submit/post 按钮——一个用于完成表单(在其他验证中验证必填字段),一个用于保存表单(不需要真正的验证) .它在不包括不显眼的验证的情况下工作正常,但我想使用它......当我这样做时,最终确定按钮工作正常,但保存按钮就像它是最终确定按钮一样 - 在不应该验证字段时验证字段是。
有没有办法让这成为可能?
代码片段如下。
查看
{BeginForm code goes here}
@Html.LabelFor(model => model.TotalHours)
@Html.TextBoxFor(model => model.TotalHours)
@Html.ValidationMessageFor(model => model.TotalHours)
...
<input type="submit" value="Finalize" name="btnCreate" />
<input type="submit" value="Save and Quit" name="btnCreate" />
模型(使用 EF)
[Required(ErrorMessage = "Please enter the total number of hours.")]
[Display(Name = "Total Hours")]
public Nullable<decimal> TotalHours { get; set; }
控制器
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name = "btnCreate", Argument = "Finalize")]
public async Task<ActionResult> CreateFinalize(FormObj oForm)
{
using (var dbContext = new DBContext())
{
if (ModelState.IsValid) { ... }
else { return View(oForm); }
}
}
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name = "btnCreate", Argument = "Save and Quit")]
public async Task<ActionResult> CreateFinalize(FormObj oForm)
{
using (var dbContext = new DBContext())
{
// Remove model errors
foreach (var modelStateVals in ModelState.Values)
modelStateVals.Errors.Clear();
// Process the form and save here
}
}
我发现 html 中有您可以添加的内容:
<input class="cancel" />
不幸的是,取消 class 已被弃用。但现在它使用 formnovalidate,这正是我需要的。