Сопоставление моделей представления с проверкой KnockoutJS

StackOverflow https://stackoverflow.com/questions/9304132

Вопрос

Я создавал страницу с использованием ASP.NET MVC 2, используя KnockoutJS, плагин сопоставления KnockoutJS и jQuery 1.7.1.Я также хотел бы иметь возможность использовать плагин проверки KnockoutJS (найден здесь).Однако мне нужно, чтобы проверка выполнялась как на стороне сервера, так и на стороне клиента.

Можно ли сопоставить мои модели представления с Плагин проверки KnockoutJS который использует метод .extend()?

РЕДАКТИРОВАТЬ:Пример.Автоматически включите это:

[Required]
public string Firstname { get; set; }

В это:

var viewmodel = {
    firstname: ko.observable().extend({ required: true });
}
Это было полезно?

Решение

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

Другие советы

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

Везде, где вы хотите отобразить сообщение об ошибке на своей странице, добавьте тег span, например:

<span name="validationError" style="color:Red" 
data-bind="visible: yourValidationFunction(FieldNameToValidate())">
* Required.
</span>

Очевидно, вам нужно написать «yourValidationFunction», чтобы делать все, что вы хотите.Ему просто нужно вернуть true или false, true означает отображение ошибки.

Вы можете использовать jquery, чтобы запретить пользователю продолжить работу, если отображаются какие-либо ошибки проверки.Вероятно, у вас уже есть кнопка сохранения, которая запускает функцию javascript для выполнения ajax или чего-то еще, поэтому просто включите ее вверху:

 if ($("[name='validationError']:visible").length > 0) {
        alert('Please correct all errors before continuing.');
        return;
    }

Это намного проще и гибче, чем многие другие решения для проверки.Вы можете разместить свое сообщение об ошибке где угодно, и вам не нужно учиться использовать какую-либо библиотеку проверки, и этот метод работает независимо от технологии на стороне сервера.

Я бы порекомендовал использовать встроенную проверку клиентов MVC, вам, возможно, придется вызвать ее, попробуйте:

$.validator.unobtrusive.parse(yourFormElement)

Код из: https://stackoverflow.com/a/5669575/941536

Не уверен, что MVC2 имеет ненавязчивую проверку клиентов, хотя и не уверен, будет ли обновление до MVC3 для вас в случае необходимости.

Плагин проверки работает так, как вы расширяете наблюдаемые, которые вы хотите проверить.

Неважно, созданы ли они из отображений, просто создайте функцию, которую вы запускаете после того, как сопоставление было выполнено, и добавьте всю проверку, которую вы хотите.

Или, если вы хотите, вы можете использовать валидационные привязки. Прочитайте readme на GitHub для проверки нокаута, и вы видите, как они это делают.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top