2011-09-25 131 views
14

獲取在MVC3中返回視圖的操作的名稱的正確方法是什麼?在視圖中獲取控制器的操作名稱

我使用ViewContext.Controller.ValueProvider.GetValue("action").RawValue返回Action(方法)的名稱,該名稱是在MVC3中創建視圖。我在部分視圖中返回此視圖,該視圖包含在由操作返回的視圖中。

它適用於索引,但是,當我嘗試將它用於另一個方法名稱時,它總是計算爲false。

在不久的窗口,我得到如下結果:

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

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

這是非常令人困惑,因爲第一個語句評估與價值「編輯」的字符串,而比較這串「編輯」回報假?

離奇......

回答

45

RawValueobject,所以RawValue == "..."電話Object.op_Equality,其通過引用而不是通過值comparse。

呼叫ViewContext.RouteData.GetRequiredString("action")

+0

由於但這返回 一個對象引用是所必需的非靜態字段,方法或屬性「System.Web.Routing.RequestContext'RequestContext.RouteData.GetRequiredString(「動作」)。 RouteData.get' ' – Darbio

+0

我的意思是'ViewContext'。 – SLaks

+0

謝謝 - 這工作。 – Darbio

相關問題