Как я могу проверить HiddenField, используя MVC3 Razor & Unobtrusive jQuery validation? - PullRequest
0 голосов
/ 21 сентября 2011

У меня есть модель, подобная следующей

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, чем 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;
        }
    }
}

1 Ответ

1 голос
/ 21 сентября 2011

Вы можете использовать встроенный атрибут Range:

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

Это включает в себя ненавязчивую проверку на стороне клиента.

Чтобы создать пользовательский валидатор на стороне клиента, см. эта статья .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...