C# 根据提交按钮禁用某些验证

C# 根据提交按钮禁用某些验证,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个像belowe这样的模型: public class AddPurchaseViewModel { [Required(ErrorMessage="Please enter ...")] public string InvoiceNumber { get; set; } [Required(ErrorMessage="Please enter ...")] public DateTime InvoiceDate { get; set; } [

我有一个像belowe这样的模型:

 public class AddPurchaseViewModel
{
    [Required(ErrorMessage="Please enter ...")]
    public string InvoiceNumber { get; set; }

    [Required(ErrorMessage="Please enter ...")]
    public DateTime InvoiceDate { get; set; }

    [Required(ErrorMessage="Please enter ...")]
    public Guid BusinessPartnerId { get; set; 
}

在视图中,我有两个提交按钮,如下所示:

<button type="submit" class="btn btn-success" name="command" value="save">Save</button>
<button type="submit" class="btn btn-warning" name="command" value="SaveAsTemp" >Save And Temp</button></li>
我想当用户点击提交按钮
保存
时,用户应该填写本例中的所有文本框,ModelState处理它并正常工作

但是在这种情况下,当点击SaveAsTemp时,不需要业务伙伴填写

我不想一个接一个地检查If,因为我的模型有超过20个字段 .
有办法做到这一点吗?

您可以使用JQuery单击SaveAsTemp按钮禁用验证

$('input[type="button"][value="SaveAsTemp "]').click(function() {
    var settngs = $.data($('#MyForm'), 'validator').settings;
    settngs.ignore = ".ignore";
});
用您的表单Id替换#MyForm

或针对单个字段

$("#SomeValue").removeAttr("data-val-required");
假设它是“必需的”验证器

在控制器中,您可以禁用/清除特定文件上的错误,如下所示

ModelState["MyField"].Errors.Clear();

请检查条件验证
希望有帮助。

我不想禁用所有验证,我只想禁用其中一个。更新的答案,字段是否为“必需”验证?您的代码只需在客户端禁用,而在控制器中启用验证。您可以使用ModelState[“MyField”]禁用/清除特定字段上的模型错误。errors.clear();这对你肯定有帮助
ModelState["MyField"].Errors.Clear();