2011-09-25 34 views
14

MVC3でビューを返すアクションの名前を取得する正しい方法は何ですか?ビュー内でコントローラのアクション名を取得

私はViewContext.Controller.ValueProvider.GetValue("action").RawValueを使用して、MVC3でビューを作成しているアクション(メソッド)の名前を返します。これは、アクションによって返されたビューに含まれるパーシャルビューで返します。

インデックスには問題ありませんが、別のメソッド名に使用しようとすると、常にfalseに評価されます。イミディエイトウィンドウで

私は、次のような結果を得る:

「編集」を返しますが、文字列にこれを比較しながら最初の文は、値「編集」との文字列に評価されるので、非常に混乱して
ViewContext.Controller.ValueProvider.GetValue("action").RawValue 
"Edit" 

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

偽ですか?奇妙

...

答えて

45

RawValueは、参照することによりよりもむしろ値によってcomparseようRawValue == "..."コールObject.op_Equalityobjectです。

コールViewContext.RouteData.GetRequiredString("action")

+0

おかげで、これはオブジェクト参照が非静的フィールド、メソッド、またはプロパティ「System.Web.Routing.RequestContextのために必要とされる 'RequestContext.RouteData.GetRequiredString(「アクション」)を返します。 RouteData.get ' ' – Darbio

+0

私は' ViewContext'を意味しました。 – SLaks

+0

ありがとう - それは動作します。 – Darbio

関連する問題