Validation target

You often need to validate only a part of the viewmodel. For example, if the page holds two forms, you may want to validate one of them independently on the other.

In DotVVM, there is the Validation.Target property. Using this property you can specify the validation target (the object which gets validated) for commands in a specific part of the page:

<form Validation.Target="{value: Customer}">

    <!-- All postbacks made from inside of this form will only validate 
    the Customer object instead of validating the entire viewmodel. -->

</form>

You can apply the Validation.Target property to any HTML element, and to almost all DotVVM controls. In the example, for all postbacks made by controls in the form element, the validation rules will be checked only on the Customer property of the viewmodel.

The AddModelError method on the context object is used to report errors anywhere in the viewmodel, even outside of the validation target.

ValidationSummary

This applies also to the ValidationSummary control. If this control or some of its parents has the Validate.Target property set, the ValidationSummary will display only the errors from the validation target.

If you don't set the Validation.Target, entire viewmodel is validated - the default value for the property is {value: _root}.

The Validation.Target must always point to an object. Collections, or properties of primitive types (strings, numbers, dates etc.) are not allowed as validation targets.

See also