2011-09-25 108 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

相关问题