【问题标题】:disable some Validation according Submit button根据提交按钮禁用一些验证
【发布时间】:2016-03-08 11:07:19
【问题描述】:

我有一个像下面这样的模型:

 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>

在控制器中我有:

 public virtual ActionResult Create(AddPurchaseViewModel purchaseViewModel, string command)
    {
        if (!ModelState.IsValid)
            return View(purchaseViewModel);
        var result = AddPurchaseStatus.AddFailed;
        if (command.ToLowerWithTrim()== "Save".ToLowerWithTrim())
            result = _purchaseService.Add(purchaseViewModel);
        else
            result = _purchaseService.AddAsTemp(purchaseViewModel);
        return View();
    }

我想当用户点击提交按钮Save,在这种情况下,用户应该填写所有文本框,ModelState 处理它并且工作正常。

但在这种情况下单击 SaveAsTemp 时不需要 BusinessPartner 填写。

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

【问题讨论】:

标签: c# asp.net-mvc


【解决方案1】:

【讨论】:

    【解决方案2】:

    您可以使用 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(); 禁用/清除特定字段上的模型错误;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2015-11-28
    • 1970-01-01
    • 2015-06-24
    • 1970-01-01
    相关资源
    最近更新 更多