2009-04-03 4 views
0

J'utilise un mappeur O/R, qui peut recharger des objets de la base de données d'une manière générique. Je voudrais être en mesure d'intercepter la demande juste après la création des objets mappés, afin de les recharger.Méthodes d'action d'interception d'un contrôleur MVC

ActionFilters sont bien sûr là, mais le problème est que ActionFilters (ou les exemples que j'ai vus) peuvent gérer les données fournies par le formulaire et non après qu'un objet ait été créé.

J'ai regardé les méthodes remplaçables du contrôleur, mais n'ai rien trouvé d'évident qui a attiré mon attention. Est-ce que quelqu'un sait d'une manière de faire ceci?

Nous vous remercions de vos suggestions!

Nasser

Répondre

0

Ce dont vous avez besoin est un modèle de classeur personnalisé. Vous pouvez hériter de la classe ModelBinder par défaut et fournir la logique souhaitée.

Par exemple, si vous avez ceci:

public ActionResult Save([Bind(typeof(CustomModelBinder))] Customer customer) 
{ 
    /* ... */ 
} 

Le modèle de liaison va créer l'objet pour vous, mais vous pouvez choisir de le chercher à partir de la première base de données (pour les enregistrements existants).

+0

Cher Ben! Merci pour votre réponse! J'ai trouvé le code du modelbinder fourni avec le O/R Mapper que j'utilise, donc je dois maintenant essayer de recharger le modelbinder! Merci pour votre réponse! Nasser – Nasser

0

Si je comprends bien, vous besoin de quelque chose comme ça.

public class Navigate : ActionFilterAttribute, IActionFilter 
{ 
    void IActionFilter.OnActionExecuted(ActionExecutedContext filterContext) 
    { 
     ViewResult view = filterContext.Result as ViewResult; 

    } 
} 

Vu vous trouverez view.ViewData.Model qui appartient au contrôleur actuel et vous pouvez faire tout ce que vous voulez avec ce cartographié les données. Faites-moi savoir si j'avais raison :)

+0

Cher Omoto! merci pour votre réponse. Vous répondez aux transactions avec le résultat APRÈS l'action. Je suis en fait intéressé par les objets mappés avant que l'action ne soit touchée. Salutations Nasser – Nasser

Questions connexes