2011-09-25 13 views
14

¿Cuál es la forma correcta de obtener el nombre de la Acción devolviendo la vista en MVC3?Obtener el nombre de la acción del controlador en la vista

Estoy usando ViewContext.Controller.ValueProvider.GetValue("action").RawValue para devolver el nombre de la Acción (Método), que está creando la Vista en MVC3. Devuelvo esto en una Vista parcial, que se incluye en la Vista devuelta por la Acción.

Funciona bien para Index, pero, cuando intento usarlo para otro nombre de método, siempre se evalúa como falso.

En la ventana inmediata consigo los siguientes resultados:

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

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

que es altamente confuso, debido a que la primera declaración se evalúa como una cadena con el valor "Editar", mientras que comparar esto con una cadena devuelve "Editar" ¿falso?

extraño ...

Respuesta

45

RawValue es un object, por lo RawValue == "..." llamadas Object.op_Equality, que comparse por referencia y no por valor.

llamada ViewContext.RouteData.GetRequiredString("action")

+0

Gracias pero esto devuelve 'RequestContext.RouteData.GetRequiredString ("acción") Se requiere una referencia de objeto para el campo no estático, método o propiedad 'System.Web.Routing.RequestContext. RouteData.get ' ' – Darbio

+0

Quise decir' ViewContext'. – SLaks

+0

Gracias - eso funciona. – Darbio

Cuestiones relacionadas