【问题标题】:How do I validate a HiddenField using MVC3 Razor & Unobtrusive jQuery validation?如何使用 MVC3 Razor 和 Unobtrusive jQuery 验证来验证 HiddenField?
【发布时间】:2011-09-20 22:24:13
【问题描述】:

我有一个类似于以下的模型

public class TaskModel
{
    public int UserId { get; set; }
    public int CustomerId { get; set; }
    public string CustomerDescription { get; set; }
    /* Snip */
}

如何添加验证以确保在客户端,代表CustomerId 的隐藏字段大于零?

@Html.LabelFor(x => x.CustomerId)
@Html.HiddenFor(x => x.CustomerId)
<label id="customerName" class="description">
    @Model.CustomerName
</label>

只是为了解释上面发生了什么;我使用弹出窗口从列表中选择客户,然后使用客户 ID 填充隐藏字段并将标签描述更新为 ID 所代表的客户。我这样做是为了避免不必要的帖子和数据库调用。

我不想发布表单数据来确定 ID 是否大于 0。有没有一种简单的方法可以将它作为属性添加到模型并让它处理客户端?我已经编写了以下 Validation 属性,但我不知道如何让它在客户端也无缝地工作。

public class ValidIDAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value == null)
        {
            return false;
        }
        else
        {
            if (value.GetType() == typeof(int))
            {
                return (int)value > 0;
            }
            else if (value.GetType() == typeof(Guid))
            {
                return (Guid)value != Guid.Empty;
            }

            return false;
        }
    }
}

【问题讨论】:

    标签: jquery asp.net-mvc-3 validation unobtrusive-validation


    【解决方案1】:

    你可以使用内置的Range属性:

    [Range(0, 99999)]
    public int UserId { get; set; }
    

    这包括不显眼的客户端验证。

    要创建自定义客户端验证器,请参阅this article

    【讨论】:

    • 谢谢,这个技巧很好......虽然这篇文章似乎没有使用Unobtrusive?它使用 MVC 验证?
    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    相关资源
    最近更新 更多