2011-09-25 8 views
14

Qual è il modo corretto per ottenere il nome dell'azione restituendo la vista in MVC3?Ottieni il nome dell'azione del controllore nella vista

Sto usando ViewContext.Controller.ValueProvider.GetValue("action").RawValue per restituire il nome dell'azione (metodo), che sta creando la vista in MVC3. Lo restituisco in una vista parziale, che è inclusa nella vista restituita dall'azione.

Funziona correttamente per Index, ma, quando provo ad usarlo per un altro nome di metodo, viene sempre valutato come falso.

Nella finestra immediata ottengo i seguenti risultati:

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

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

che è altamente confusa, perché la prima istruzione restituisce una stringa con valore "Modifica", mentre confrontando questo in una stringa restituisce "Modifica" falso?

Bizzarro ...

risposta

45

RawValue è un object, così RawValue == "..." chiamate Object.op_Equality che comparse per riferimento anziché al valore.

chiamata ViewContext.RouteData.GetRequiredString("action")

+0

Grazie ma questo restituisce 'RequestContext.RouteData.GetRequiredString ("azione") è necessario un riferimento a un oggetto per il campo non statico, metodo o proprietà 'System.Web.Routing.RequestContext. RouteData.get ' ' – Darbio

+0

Intendevo' ViewContext'. – SLaks

+0

Grazie - funziona. – Darbio

Problemi correlati