2012-03-20 2 views
5

मैं एक कार्य सूचीएमवीसी 3 मुझे "बाल क्रियाओं को रीडायरेक्ट क्रियाएं करने की अनुमति नहीं है" त्रुटि क्यों मिलती है?

//[HttpGet] (will come back to that!) 
    public ViewResult List(int page = 1) 
    { 
     //blah blah blah 
     return View(viewModel); 
    } 

मिला अपने ध्यान में रखते हुए हम कार्रवाई प्रस्तुत करना:

@{   
    Html.RenderAction("UpdateSearch"); 
} 

कार्रवाई परिभाषाएँ:

[ChildActionOnly] 
[HttpGet] 
public PartialViewResult UpdateSearch() 
{ 
    // do something and display a form in view 
    return PartialView(so); 
} 

[HttpPost] 
public RedirectToRouteResult UpdateSearch(Options searchOptions) 
{ 
    // do something and redirect to List 
    return RedirectToAction("List"); 
} 

और मैं हो रही है: बाल कार्रवाई की अनुमति नहीं है जब भी कोई फॉर्म सबमिट करता है तो रीडायरेक्ट क्रिया अपवाद करें। मैं MVC3 के लिए नया हूँ, लेकिन ऐसा लगता है कि पुनर्निर्देशन भी एक पोस्ट है, क्योंकि [HttpGet] सूची उपरोक्त विधि uncommented "संसाधन नहीं पाया जा सकता है" है अगर ऐसा होता है।

मैं कैसे Http पुनर्निर्देशन पर विधि बदल सकता हूँ या मैं कुछ गलत कर रहा हूँ? मैंने इसे बिंग करने की कोशिश की, लेकिन कोई सफलता नहीं।

उत्तर

3

रीडायरेक्ट जानकारी प्रतिक्रिया हेडर में संग्रहित है। हालांकि, जब बच्चे की कार्रवाई चलती है तो प्रतिक्रिया पहले ही भेजी जा रही है ताकि शीर्षलेख लिखे जा सकें।

संक्षेप में, क्लाइंट साइड पर जावास्क्रिप्ट के उपयोग के अलावा बाल कार्रवाई से रीडायरेक्ट करने का कोई तरीका नहीं है।

+0

यही मतलब होता है, लेकिन मेरे उदाहरण में रीडायरेक्ट [ChildActionOnly] एनोटेशन के साथ विधि द्वारा नहीं किया जाता है। समस्या यह है कि जब [HttpPost] UpdateSearch सूची पर रीडायरेक्ट, यह पोस्ट के साथ पुनर्निर्देश, इसलिए [HttpPost] विधि (बनने की कोशिश कर) है ध्यान में रखते हुए आंशिक पीढ़ी के लिए इस्तेमाल किया है। क्या मैं इसे बदलने के लिए रूटवेल्यू डिक्शनरी का उपयोग कर सकता हूं? –

+0

हमें आंशिक दृश्य की सामग्री भी दिखाएं। समस्या शायद BeginForm में गलत मार्ग परिभाषा में निहित है लेकिन मैं दृश्य को देखे बिना नहीं बता सकता। –

+2

आप सही हैं। इसे ठीक करने के लिए, यह पर्याप्त है UpdateSearch से इतना बदलाव (जाओ, बाल संस्करण) को ध्यान में रखते BeginForm विधि करने के लिए कार्रवाई पैरामीटर जोड़ने का: (Html.BeginForm()) { को /का उपयोग कर @: /@ (Html.BeginForm ("UpdateSearch")) का उपयोग करना { समस्या तय। क्या आप समझाने में सक्षम हैं क्यों? –

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