Получить имя контроллера в представлении

Каков правильный способ получить имя действия, возвращающего представление в MVC3?

Я использую ViewContext.Controller.ValueProvider.GetValue("action").RawValue, чтобы вернуть имя Action (Method), которое создает View в MVC3. Я возвращаю это в частичном представлении, которое включено в представление, возвращенное действием.

Он отлично работает для индекса, но когда я пытаюсь использовать его для другого имени метода, он всегда вычисляет значение false.

В ближайшем окне я получаю следующие результаты:

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

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

Это очень сбивает с толку, потому что первый оператор оценивает строку со значением "Изменить", а при сравнении этого со строкой "Правка" возвращает false?

Bizarre...

Ответы

Ответ 1

RawValue - это object, поэтому RawValue == "..." вызывает Object.op_Equality, который сравнивается по ссылке, а не по значению.

Вызов ViewContext.RouteData.GetRequiredString("action")