web-dev-qa-db-ja.com

ビューでコントローラーアクション名を取得する

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が返されるため、これは非常に混乱しますか?

奇妙な...

17
Darbio

RawValueobjectであるため、_RawValue == "..."_は_Object.op_Equality_を呼び出します。これは、値ではなく参照によって分解されます。

ViewContext.RouteData.GetRequiredString("action")を呼び出します

53
SLaks