2009-08-21 14 views
8

मैं एक परिदृश्य में जहाँ मैं एक दृश्य पृष्ठ पर हूँ और है कि एक RedirectToAction वापसी के माध्यम से नियंत्रक बी में एक और कार्रवाई कॉल नियंत्रक एक में एक कार्रवाई विधि बुला है रिफ्रेश नहीं हो, और इस कार्रवाई कि इम पहले से ही पर देखने देता है।RedirectToAction पेज

मैं चाहता हूं कि पेज दो राज्यों के सिस्टम सिस्टम के अपडेट को प्रतिबिंबित करने के लिए ताज़ा करे, लेकिन एमवीसी यह तय करने के लिए प्रतीत होता है कि पृष्ठ को रीफ्रेश करने की आवश्यकता नहीं है क्योंकि मैं एक ही दृश्य में लौट रहा हूं। मैं ताज़ा करने के लिए कैसे मजबूर करूं?

उदाहरण:

//user is on A/index, and submits a form that calls this in contoller B 
public ActionResult ActionInControllerB() 
{ 
    //do stuff 
    return RedirectToAction(ActionNames. ActionInControllerA, ControllerNames.A); 
} 

public ActionResult ActionInControllerA() 
{ 
    //do stuff 
    return View("index"); 
} 
+0

आप जो कर रहे हैं वह उचित लगता है, और हां नतीजा समझ में नहीं आता है। क्या आप संभवतः 2 अलग-अलग नियंत्रकों में 2 विधियों के कोड पेस्ट कर सकते हैं? –

+0

आपके द्वारा पूछे गए कोड को जोड़ा गया। धन्यवाद डेविड – Dan

+0

हम्म, हाँ संदिग्ध कुछ भी अजीब नहीं है। देखें कि आप नीचे मेरे उत्तर के बारे में क्या सोचते हैं ... –

उत्तर

0

मैं के बाद से मैं वास्तव में यकीन नहीं है थोड़ा अस्पष्ट यहाँ होने के लिए, जा रहा हूँ, लेकिन मैं पहले इन पंक्तियों के साथ कुछ देखा है (और किसी और का जवाब दे रहा है)। यह संभव है कि समस्या यह है कि रीडायरेक्ट से पहले अपडेट लेनदेन को संसाधित या फ्लश नहीं किया गया है। उदाहरण के लिए एनएचबीर्नेट कभी-कभी डीबी को अपडेट करने की प्रतीक्षा करता है जब तक कि मुझे लगता है कि प्रतिक्रिया संसाधित होने के बाद मुझे लगता है।

यदि यह मामला है, तो जो कुछ भी प्राप्त कर रहा है आप नियंत्रक एक में क्या अभी परिवर्तन उठा नहीं है। हो सकता है कि आप किसी भी तरह डेटाबेस प्रक्रिया को संसाधित करने के लिए मजबूर कर सकें।

क्षमा करें, लेकिन केवल संभावना मैं के बारे में सोच सकते हैं thats। आपको अपना google-fu संगठन और हेडबैंड रखना होगा!

+0

दुर्भाग्यवश यह समस्या नहीं है। मेरे ओआरएम ने अपना पूरा काम किया है, और अन्य क्लाइंट साइड बिट्स हैं जो किसी भी मामले में दिखाई देनी चाहिए। – Dan

+0

ओह ठीक है :-(यदि आप वास्तव में अटक गए हैं तो आप एक प्रतिक्रिया.Redirect (Request.Url.ToString()) आज़मा सकते हैं, लेकिन यदि यह काम करता है तो यह एक कामकाज और उस पर एक गन्दा है। –

0

मैं अपने प्रोजेक्ट पर इस तरह एक समस्या हुई। क्या हो रहा है, मुझे लगता है कि आप ActionInControllerB में अपना विचार अपडेट कर रहे हैं, फिर जब आप रीडायरेक्ट करने के लिए यह दृश्य साफ़ कर रहे हैं। मुझे इस तरह की समस्या थी जहां मैं अपने जीईटी में नहीं था: नियंत्रक और केवल पोस्ट: नियंत्रक में अपडेट कर रहा था। इसलिए, जो मैं प्रदर्शित करना चाहता था वह नहीं आ रहा था। तो मैं सुझाव दूंगा कि आप केवल यह सुनिश्चित कर लें कि प्रदर्शन में आपके परिवर्तन सही जगह पर हो रहे हैं।

मैं और काफी MVC तो मैं अभी जिस तरह अपने प्रश्न ग़लत व्याख्या की जा सकती है करने के लिए नया हूँ, तो मैं कर रहा हूँ, क्षमा करें। लेकिन, मुझे उम्मीद है कि यह आपको कम से कम थोड़ा सा मदद करेगा।

7

मेरा अनुमान है कि आप कैशिंग समस्याओं में चला रहे हैं।

के साथ अपने ActionInControllerB और ActionInControllerA तरीकों डेकोरेट:

[OutputCache(Location=System.Web.UI.OutputCacheLocation.None)] 
1

मैं इसी तरह की समस्या थी, लेकिन यह नियंत्रक फाइल करने के लिए दृश्य फ़ाइल से ajax कॉल से शुरू कर दिया। नियंत्रक ने डीबी को अपडेट किया और फिर दृश्य को रीफ्रेश करने के लिए RedirecToAction को कॉल किया। लेकिन कोई ताज़ा नहीं ... उपर्युक्त उत्तरों में से कोई भी मेरी मदद नहीं करता है। एक ही रास्ता मैं का समाधान कर सकता यह एक अलग पद्धति का उपयोग करके दृश्य फ़ाइल से एक कार्रवाई कॉल करने के लिए किया गया था:

window.location = "Experiment/DeleteExperiment?experimentId=" + $("#DeleteExperimentButton").val(); 

उस बिंदु सब कुछ से काम किया के रूप में मैं की उम्मीद है।