2014-06-06 7 views
11

क्या मैं यह कक्षा एक वर्ग के साथ कर सकता हूं?एमवीसी: क्या मैं नियंत्रक के बाहर कक्षा के अंदर मॉडलस्टेट का उपयोग कर सकता हूं?

... 
    using System.Web.Mvc; 
    ... 

    public static class aaa 
    { 

     public static test() { 

     if (something) ModelState.AddModelError("", "test"); 
     } 

    } 
नियंत्रक कॉल अंदर

:

...

public class mycontroler { 

    public void Index() { 
      .... 
      aaa.test(); 
      .... 
    } 

} 

यह संभव है? मैं नियंत्रक के दूसरे भाग में कक्षाओं के अंदर कोड को नियंत्रित करना चाहता हूं।

उत्तर

15

आप इस तरह चारों ओर अपने मॉडल राज्य पारित कर सकते हैं:

public static void test(ModelStateDictionary ModelState) 
{ 
    if (something) ModelState.AddModelError("", "test"); 
} 

और अपने नियंत्रक अंदर से फोन:

aaa.test(ModelState); 
+0

हां लेकिन शब्दकोष या रेफ आउट हो गया है, और संकलक इसे अनुमति नहीं देता है, है ना? – David

+0

@ डेविड क्षमा करें, मुझे समझ में नहीं आता कि आप क्या कह रहे हैं? – DavidG

+0

क्षमा करें, मैंने जो कहा है मैंने किया है लेकिन मुझे पैरामीटर को संदर्भ के रूप में पास करना होगा क्योंकि अंदर, या पैरामीटर के रूप में बदल जाएगा, ऐसा करने वाला, कंपाइलर मुझे एक त्रुटि देता है जिसमें पैरामीटर में रेफरी या आउट करने की अनुमति नहीं है ऑब्जेक्ट – David

1

नहीं, आप नहीं कर सकते। कंट्रोलर के अंदर आप जो संदर्भ दे रहे हैं वह संपत्ति है, कक्षा नहीं। आप अभी भी इसे तर्क के रूप में बुलाए जाने वाले तरीके से पास कर सकते हैं।

+1

मैं स्ट्रिंग के अंदर त्रुटि जोड़ा गया है और मैं नियंत्रक में संदेश प्राप्त होगा, के बाद अगर संदेश खाली है तो कोई त्रुटि नहीं है अन्यथा मैं नियंत्रक के अंदर AddModelError का उपयोग करके जोड़ दूंगा। – David

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

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