2011-09-25 16 views
14

में नियंत्रक का कार्य नाम प्राप्त करें एमवीसी 3 में दृश्य को वापस करने के क्रिया का नाम पाने का सही तरीका क्या है?देखें

मैं एक्शन (विधि) का नाम वापस करने के लिए ViewContext.Controller.ValueProvider.GetValue("action").RawValue का उपयोग कर रहा हूं, जो एमवीसी 3 में दृश्य बना रहा है। मैं इसे आंशिक दृश्य में वापस कर देता हूं, जिसे क्रिया द्वारा लौटाए गए दृश्य में शामिल किया गया है।

यह सूचकांक के लिए ठीक काम करता है, लेकिन, जब मैं किसी अन्य विधि का नाम के लिए उपयोग करने का प्रयास करें, यह हमेशा गलत का आकलन।

तत्काल विंडो में मैं निम्नलिखित परिणाम प्राप्त:

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

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

कौन सा अत्यधिक भ्रामक है, क्योंकि पहले बयान, मूल्य "संपादित करें" के साथ एक स्ट्रिंग के लिए मूल्यांकन करता है, जबकि एक स्ट्रिंग को यह की तुलना "संपादित करें" रिटर्न असत्य?

विचित्र ...

उत्तर

45

RawValue एक object है, इसलिए RawValue == "..." कॉल Object.op_Equality, जो संदर्भ के बजाय मूल्य द्वारा comparse।

कॉल ViewContext.RouteData.GetRequiredString("action")

+0

धन्यवाद लेकिन इस 'RequestContext.RouteData.GetRequiredString (" कार्रवाई ") एक वस्तु संदर्भ गैर स्थिर क्षेत्र, विधि, या संपत्ति 'System.Web.Routing.RequestContext के लिए आवश्यक है देता है। Routeata.get ' ' – Darbio

+0

मेरा मतलब था' ViewContext'। – SLaks

+0

धन्यवाद - यह काम करता है। – Darbio

संबंधित मुद्दे