Using the ModelHandler class
The model handler helps map the UI components directly to ConsumedResult objects. The model handler is designed to create a two way bind between UI components and a model. Individual UI components can be mapped to each individual field and the list error messages for a field. This class is provided with the ConsumeAPI.UI.Simple nuget. It can be extended to configure how the different UI components need to be mapped the fields. The Xamarin.Forms.Consume.Simple provides a model handler that works out of the box with xamarin forms. This class contains a Link() function that can map Xamarin.Form's Entry fields to the fields of a model and maps a StackLayout for the error messages of the field.
To use this concept, you will first need to create a new model handler object (lets say mapped to Person class).
var handler = new ModelHandler
Now this can be mapped to existing fields. Here is an example using the ModelHandler provided by Xamarin.Forms.Consume.Simple
handler.Link(p => p.FirstName, FNameTextField, FNameErrStackLayout); handler.Link(p => p.LastName, LNameTextField, LNameErrStackLayout);
Once all fields are mapped, handler.Model can be used to get or set the model. The Submit() functions can access and handle the ConsumedResult objects.
await handler.SubmitAsync( async model => RunSomething(model), // lamda that returns the ConsumedResult object. // This is mosty used to make a http call via the Consumer s => DoThisOnSuccess(s) // The function to run on success. S is the data returned by http );
In the above function, if the http request fails with a 400, it automatically populates the errors in the stack layouts.