MVC 5 自定义验证在下一个选项卡之前验证

MVC 5 Custom Validation Validate Before Next Tab

我希望在进入下一个选项卡之前触发自定义验证,或者如果自定义验证不符合其他字段的要求,则阻止进入下一个选项卡

型号

[EnsureMinimumElementsAttributeDropOff(ErrorMessage = "You must supply at least one Drop Off Date")]
public virtual List<DropOffDate> DropOffDates { get; set; }

自定义验证

public class EnsureMinimumElementsAttributeDropOff : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        var list = value as List<DropOffDate>;

        if (list != null)
        {
            foreach (var item in list)
            {
                // check if at least 1 row is filled for Drop-off Date by user
                if (!string.IsNullOrEmpty(item.Date) && !string.IsNullOrEmpty(item.StartTime)
                    && !string.IsNullOrEmpty(item.EndTime))
                    return true;

            }
        }
        return false;
    }
}

我的自定义验证有效,但它仅在页面为 Submit/Post 后才验证。

提前致谢

您需要为其添加客户端验证。

这将在提交到服务器之前在浏览器中进行验证,以防止在表单无效时发帖。

指南:

http://www.itorian.com/2013/08/enabling-client-side-validation-on.html?m=1

http://blog.andrei.rinea.ro/2013/06/28/building-client-javascript-custom-validation-in-asp-net-mvc-4-using-jquery/

https://hossamhassan47.wordpress.com/2012/12/09/mvc-4-0-how-to-support-client-side-custom-validation/

要在更改选项卡时触发验证调用 valid()

if(!$("#form_id").valid())
        // keep on same tab

这将验证表单和 return 其状态,在此基础上您可以 allow/disallow 他们更改选项卡并解决问题。