Stai cercando Associazione dati (Wikipedia):
Data binding is a general technique that binds data sources from the provider and consumer together and synchronizes them...
In a data binding process, each data change is reflected automatically by the elements that are bound to the data. The term data binding is also used in cases where an outer representation of data in an element changes, and the underlying data is automatically updated to reflect this change. As an example, a change in a TextBox element could modify the underlying data value.
Molti framework web in più lingue offrono una sorta di associazione di dati. È un po 'diverso per le applicazioni Web di quanto lo sia per le applicazioni installate a causa della natura asincrona e stateless delle connessioni HTTP.
Un rapido esempio di utilizzo di ASP.NET MVC Framework:
public class BlogPostsController : Controller
{
// [1]
public ActionResult Create()
{
BlogPostModel model = new BlogPostModel();
return View(model);
}
// [2]
[HttpPost]
public ActionResult Create(BlogPostForm model)
{
if (ModelState.IsValid)
{
BlogPost post = blogPostService.CreateNewPost(model);
return RedirectToAction("Details", new { id = post.Id });
}
return View(model);
}
}
-
Qui sopra c'è il Controller che gestisce l'interazione dell'utente. Il metodo Create()
viene eseguito quando una richiesta GET viene inviata all'URL /BlogPosts/Create
.
-
Il metodo Create(BlogPostForm)
viene eseguito quando viene inviato <form>
. Qui controlliamo if (ModelState.IsValid)
che esegue le convalide sui campi del modulo. Se restituisce false, allora abbiamo errori di validazione. La riga return View(model)
esegue nuovamente il rendering del modulo "Crea post del blog" in modo che possa visualizzare i messaggi di errore all'utente. Se lo stato del modello è valido, salviamo nel database ed emettiamo una risposta di reindirizzamento HTTP al browser.
Ora, la parte di associazione dati entra in gioco nel modello utilizzato per creare l'HTML della pagina Web (nel file Views/BlogPosts/Create.cshtml
):
@model BlogPostForm
@using (Html.BeginForm())
{
<p>
<label>
Title:
<!-- "Binds" the Title property to the text box -->
@Html.EditorFor(model => model.Title)
</label>
<!-- Shows validation messages for the Title property -->
@Html.ValidationMessageFor(model => model.Title)
</p>
<p>
<button type="submit">Save</button>
</p>
}
Due chiamate al metodo rappresentano l'effettivo processo di "associazione dati":
@Html.EditorFor(model => model.Title)
Questo crea un tag HTML <input type="text" value="...">
, in cui la proprietà value viene riempita con il valore corrente della proprietà Title
nel modello. Il framework fa questo per il programmatore.
Ora, i messaggi di convalida:
@Html.ValidationMessageFor(model => model.Title)
Visualizza tutti i messaggi di convalida per la proprietà Title
. Ancora una volta, il programmatore non deve fare molto. Il framework fa la maggior parte del lavoro per te.
Uso di AJAX e / o JavaScript per le convalide dei moduli
JavaScript può essere disabilitato. Un utente malintenzionato può sempre aggirare le convalide JavaScript, anche le convalide AJAX. Sempre. Sempre, sempre, sempre, sempre, sempre, sempre, eseguire sempre tutte le convalide sul server durante l'elaborazione del modulo di invio. Gli utenti malintenzionati non possono ignorare il server per inserire i dati nel database (i difetti di SQL injection non sono resistenti).
Le convalide del lato client sono solo una comodità e nient'altro.