Je me demande s'il existe un bon exemple de modification des paramètres du profil ASP.NET dans MVC en utilisant la liaison de modèle.Modèle ASP.NET lié à ProfileCommon
Actuellement, j'ai:
- une classe ProfileCommon personnalisée dérivée de ProfileBase.
- une vue fortement typée (de type ProfileCommon)
- obtenir et publier des actions sur le contrôleur qui fonctionnent avec ProfileCommon et la vue associée. (voir le code ci-dessous).
Affichage des détails du profil fonctionne - le formulaire apparaît tous les champs sont correctement remplis.
Cependant, l'enregistrement du formulaire donne une exception: System.Configuration.SettingsPropertyNotFoundException: La propriété de paramètres 'FullName' est introuvable. En pensant à cela, il est logique que la liaison de modèle instancie la classe ProfileCommon elle-même au lieu de saisir celle du contexte httpcontext. De plus, la sauvegarde est probablement redondante car je pense que le profil se sauvegarde automatiquement lorsqu'il est modifié - un dans le cas, probablement même si la validation échoue. Droite? En tout cas, mon idée actuelle est que j'ai probablement besoin de créer une classe Profile séparée pour la liaison du modèle, mais cela semble un peu redondant quand j'ai déjà une classe très similaire.
Y a-t-il un bon exemple pour cela quelque part?
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit()
{
return View(HttpContext.Profile);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(ProfileCommon p)
{
if (ModelState.IsValid)
{
p.Save();
return RedirectToAction("Index", "Home");
}
else
{
return View(p);
}
}
Merci Mark, je pense que ce serait probablement travailler mais je pense que je suis tenté de le faire dans le mauvais sens . Le problème est que si des vérifications de validation sur la classe ProfileCommon échouent, les modifications sont déjà appliquées, l'objet étant marqué comme sale et écrit de toute façon. J'ai résolu ceci maintenant en utilisant une deuxième classe similaire (ProfileEdit) qui a la logique de validation et les méthodes à appliquer à/de la classe ProfileCommon. C'est plus de code mais il se sépare bien et ça marche. –