2011-09-25 2 views
14

Quelle est la bonne façon d'obtenir le nom de l'action retournant la vue dans MVC3?Obtenir le nom de l'action du contrôleur dans la vue

J'utilise ViewContext.Controller.ValueProvider.GetValue("action").RawValue pour renvoyer le nom de l'action (méthode), qui crée la vue dans MVC3. Je renvoie ceci dans une vue partielle, qui est incluse dans la vue renvoyée par l'action.

Cela fonctionne très bien pour Index, mais lorsque j'essaie de l'utiliser pour un autre nom de méthode, il est toujours évalué à false.

Dans la fenêtre immédiate, je reçois les résultats suivants:

ViewContext.Controller.ValueProvider.GetValue("action").RawValue 
"Edit" 

ViewContext.Controller.ValueProvider.GetValue("action").RawValue == "Edit" 
false 

Ce qui est très déroutant, parce que la première déclaration à une chaîne avec la valeur « Edit », tout en comparant cela à une chaîne renvoie « Modifier » faux?

Bizarre ...

Répondre

45

RawValue est un object, donc RawValue == "..." appels Object.op_Equality, qui par référence plutôt comparse que par valeur.

Appel ViewContext.RouteData.GetRequiredString("action")

+0

Merci mais retourne 'RequestContext.RouteData.GetRequiredString ("action") Une référence d'objet est nécessaire pour le champ non statique, méthode ou propriété « System.Web.Routing.RequestContext. RouteData.get ' ' – Darbio

+0

Je voulais dire' ViewContext'. – SLaks

+0

Merci - cela fonctionne. Je – Darbio

Questions connexes