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

时间:2015-07-18 10:20:55

标签: c# validation jquery-ui asp.net-mvc-5 data-annotations

我想在下一个Tab之前触发自定义验证,或者如果自定义验证不符合其他字段enter image description here

的要求,则阻止转到下一个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;
    }
}

我的自定义验证有效,但只在页面提交/发布后才会生效。

在此先感谢

1 个答案:

答案 0 :(得分:0)

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

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

指南:

Create a Secure Session Management System in PHP and MySQL

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/

要在更改标签时触发验证,请调用valid()

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

这将验证表单并返回其状态,基于您可以允许/禁止他们更改选项卡并解决问题。