ASP.NET MVC 3: проверка на уровне модели на стороне клиента или удаленная проверка - PullRequest
4 голосов
/ 10 ноября 2011

Мне нужно провести некоторую проверку на уровне модели на странице редактирования MVC 3. (Чтобы быть конкретным, я должен подтвердить, что заполнено либо поле A, либо поле B, но не оба, и не ни то, ни другое.)

Я хочу выполнить проверку на стороне клиента, а также проверку на стороне сервера, что означает либо использование удаленной проверки, либо реализацию дублирующего кода проверки. Я в порядке с любым.

Я прочитал несколько публикаций о развертывании вашей собственной проверки на уровне модели на стороне сервера, но ни одной из них не касается также реализации проверки на стороне клиента. (Я не знаю - я уверен, что кто-то там может сказать мне - легко ли настроить проверку на уровне модели на стороне клиента с помощью проверки jQuery.)

Я также читал о реализации вашей собственной удаленной проверки с нуля, что мне, возможно, придется сделать, поскольку атрибут Remote относится только к уровню свойств.

Я прочитал этот вопрос , который идентичен моему, но единственная ссылка, которая действительно указана, не говорит того, что говорит ответчик.

Итак, мой вопрос: существует ли простой и относительно простой способ реализовать проверку на уровне модели сервер + клиент с удаленным компонентом или без него? И есть ли хороший пост в блоге или веб-страница, где это объясняется?

Ответы [ 3 ]

1 голос
/ 11 ноября 2011

Я думаю Расширение аннотации данных Скоттом Кирклендом делает именно то, что вы хотите. Здесь - это запись в блоге, которую он написал о своих расширениях.

Базовая библиотека предоставляет атрибуты проверки на стороне сервера, которые можно использовать в любом проекте .NET 4.0 (без зависимости MVC). Существует также легко подключаемая библиотека проверки на стороне клиента, которую можно использовать в проектах ASP.NET MVC 3, использующих ненавязчивую проверку jquery (требуются только файлы JavaScript, включенные в MVC3).

0 голосов
/ 11 ноября 2011

На этот же вопрос ответили здесь , что может помочь?Данный ответ предназначен для проверки того, что введено хотя бы одно поле, но принципы, приведенные в ответе, могут соответствовать вашим требованиям, и вы сможете изменить ответ в соответствии с требованиями, которые вам требуются.Решение также предлагает опции проверки как на стороне сервера, так и на стороне клиента, и я полагаю, что вы можете использовать это решение как проверку уровня модуля или свойства?

Кроме того, здесь также есть следующая статья здесь , подробно описывающая, каксоздать собственную пользовательскую проверку, аналогичную приведенной в ответе, на который я ссылаюсь.

Надеюсь, это поможет.

0 голосов
/ 11 ноября 2011

Если я правильно понял, mvc 3 действительно включает проверку на стороне клиента jquery. Во-первых, для проверки на уровне модели на уровне модели вы можете переопределить функцию isValid по умолчанию своими собственными правилами проверки, что-то вроде этого (включает в себя несколько полей):

 public sealed class PropertyAAttribute : ValidationAttribute
{
    public string propertyBAttribute { get; set; }
    public override bool IsValid(object value)
    {
        // Your validation rule here
    }
}

[PropertyA(propertyBAttribute = "PropertyB")]
public object PropertyA {get;set;}
public object PropertyB {get;set;}

Затем, чтобы справиться со стороной клиента, вы можете просто использовать включенную функцию проверки jquery:

            var frm = $('#formData');

            frm.validate();

Таким образом, вы получите сообщение об ошибке на стороне клиента в соответствии с правилом, которое вы определили в модели. Надеюсь, это то, что вам нужно:)

...