Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 使用带有两个提交按钮的不引人注目的验证,其中一个按钮没有验证_Jquery_Asp.net Mvc 5_Unobtrusive Validation - Fatal编程技术网

Jquery 使用带有两个提交按钮的不引人注目的验证,其中一个按钮没有验证

Jquery 使用带有两个提交按钮的不引人注目的验证,其中一个按钮没有验证,jquery,asp.net-mvc-5,unobtrusive-validation,Jquery,Asp.net Mvc 5,Unobtrusive Validation,目前,我有一个使用MVC 5的表单,它有两个提交/发布按钮——一个用于完成表单(在其他验证中验证必填字段),另一个用于保存表单(不需要真正的验证)。它在不包含不引人注目的验证的情况下工作得很好,但我想使用它…当我使用它时,finalize按钮工作正常,但是save按钮的行为就像finalize按钮一样--在不应该使用它的时候验证字段 有没有办法让这成为可能 下面是代码片段 查看 {BeginForm code goes here} @Html.LabelFor(model => model

目前,我有一个使用MVC 5的表单,它有两个提交/发布按钮——一个用于完成表单(在其他验证中验证必填字段),另一个用于保存表单(不需要真正的验证)。它在不包含不引人注目的验证的情况下工作得很好,但我想使用它…当我使用它时,finalize按钮工作正常,但是save按钮的行为就像finalize按钮一样--在不应该使用它的时候验证字段

有没有办法让这成为可能

下面是代码片段

查看

{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" />
{BeginForm code在这里运行}
@LabelFor(model=>model.TotalHours)
@Html.TextBoxFor(model=>model.TotalHours)
@Html.ValidationMessageFor(model=>model.TotalHours)
...
模型(使用EF)

[必需(ErrorMessage=“请输入总小时数。”)]
[显示(Name=“总小时”)]
公共可空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
    }
}
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name=“btnCreate”,Argument=“Finalize”)]
公共异步任务CreateFinalize(FormObj of Form)
{
使用(var dbContext=new dbContext())
{
如果(ModelState.IsValid){…}
else{return View(oForm);}
}
}
[ValidateAntiForgeryToken]
[HttpPost]
[MultiBtn(Name=“btnCreate”,Argument=“保存并退出”)]
公共异步任务CreateFinalize(FormObj of Form)
{
使用(var dbContext=new dbContext())
{
//删除模型错误
foreach(ModelState.Values中的var modelStateVals)
modelStateVals.Errors.Clear();
//处理表单并保存在此处
}
}

我发现html中有一些东西可以添加:

<input class="cancel" />


不幸的是,cancel类已被弃用。但现在它使用了formnovalidate,这正是我所需要的。

将允许您拥有一个不会触发验证的提交按钮。请看:我在这个站点的另一个StackOverflow答案中看到了它(很遗憾,我没有链接了):好的,谢谢。很明显,这是开发人员的文档。。。奇怪的是,他忘了在自己的邮件中提及此事。更多信息:
<input class="cancel" />