-
Notifications
You must be signed in to change notification settings - Fork 9
Controllers model binding
View model can be serialized from a HTTP GET request query string or a POST data and then used in the controller.
To do this, you should use Controller<T>
or AsyncController<T>
base classes for your controller, and then specify a model type in type parameter T
.
public class LoginViewModel
{
[Required]
public string UserName { get; set; }
[Required]
public string Password { get; set; }
public bool RememberMe { get; set; }
}
public class LoginController : Controller<LoginViewModel>
{
public override ControllerResponse Invoke()
{
// Accessing serialized model
if (Model.Password == ... && Model.UserName == ...)
{
...
}
...
}
}
<form method="post">
<input type="text" name="UserName" />
<input type="Password" name="Password" />
<input type="checkbox" name="RememberMe"/> Remember me
<button type="submit">Login</button>
</form>
Note, what model serialization and validation will be executed only on the Model
property first access.
By default view model will be serialized from the HTTP GET query string or the HTTP POST form data (depending on current request method). For a JSON type of data you can use JSON serializer.
Supported view model properties types by default: string
, bool
, bool?
, int
, int?
, decimal
, decimal?
, DateTime
, DateTime?
, long
, long?
.
For DateTime
serialization you can use DateTimeFormat
attribute.
By this attribute you can specify the DateTime
source data format, for example: [DateTimeFormat("dd.MM.yyyy Hh:mm")]
All validation attributes can be found in Simplify.Web.ModelBinding.Attributes
namespace;
Available properties validation attributes by default:
-
[Required]
- indicates what field is a required field (can be set for any supported field types); -
[MaxLength(5)]
- specifies string property maximum length; -
[MinLength(2)]
- specifies string property minimum length; -
[EMailAttribute(2)]
- string property should be a valid e-mail address; -
[Regex(^[a-zA-Z]+$)]
- string property should match specified regular expression;
- Getting Started
- Main Simplify.Web principles
- Simplify.Web controllers
- Simplify.Web views
- Simplify.Web templates
- Simplify.Web configuration
- Templates variables
- Static content
- Template factory
- Data collector
- String table
- File reader
- Web context
- Environment
- Language manager
- Redirector
- HTML