Получить имя действия контроллера в представлении - PullRequest
17 голосов
/ 25 сентября 2011

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

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

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

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

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

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

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

Bizarre ...

1 Ответ

53 голосов
/ 25 сентября 2011

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

Звоните ViewContext.RouteData.GetRequiredString("action")

...