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が返されるため、これは非常に混乱しますか?
奇妙な...
RawValue
はobject
であるため、_RawValue == "..."
_は_Object.op_Equality
_を呼び出します。これは、値ではなく参照によって分解されます。
ViewContext.RouteData.GetRequiredString("action")
を呼び出します