2009-05-19 19 views
8

मैंने एक एएसपी नेट एमवीसी आवेदक लिखा है जो आईफ्रेम के अंदर चलता है। जब मेरे नियंत्रक विधियों में से एक RedirectToAction() लौटाता है, तो मैं चाहता हूं कि शीर्ष ब्राउज़र यूआरएल पते पर रीडायरेक्ट करे, न केवल मेरे IFrame। मैं ऐसा कैसे कर पाऊंगा? क्योंकि मैं किसी अन्य साइट के अंदर दौड़ रहा हूं, मुझे ब्राउज़र पर एक पूर्ण यूआरएल यानी http://parentsite.com/myapp/ {नियंत्रक}/{action} 'एएसपी .NET एमवीसी रीडायरेक्ट टोपेशन पूर्ण यूआरएल

मुझे लगता है कि यह मेरे हाइपरलिंक्स के लक्ष्य विशेषता को' _top 'पर सेट करने के बराबर है 'ताकि पूरी साइट रीडायरेक्ट हो (यह HtmlHelper को विस्तारित करके बहुत सरल होगा), लेकिन सर्वर सर्वर साइड रीडायरेक्ट के लिए मैं इसे कैसे कर सकता हूं?

अभी तक, मेरा समाधान ऑनरसेट एक्सक्लूसिंग को ओवरराइड करना है, जिस URL को मैं रीडायरेक्ट करना चाहता हूं उसे निकालने के लिए, फिर, एक फ्रेम ब्रेकर व्यू पर रीडायरेक्ट करने के लिए रीडायरेक्ट करने के लिए मूल रूप से एक फ्रेम ब्रेकर व्यू पर रीडायरेक्ट करें। फ्रेम ब्रेकर व्यू बस कुछ जावास्क्रिप्ट लिखता है जो मेरे मूल यूआरएल पर शीर्ष ब्राउजर यूआरएल सेट करता है। इस दृष्टिकोण के मुकाबले एक अतिरिक्त HTTP अनुरोध है, लेकिन कम से कम किसी भी एमवीसी सिद्धांतों का उल्लंघन नहीं करता है (मुझे नहीं लगता!)। विचार?

धन्यवाद

उत्तर

7

उपयोग Redirect() बजाय RedirectToAction() और यूआरएल में गुजरती हैं।

संपादित करें:

मुझे लगता है कि आप ग्राहक के पक्ष IFrame से बाहर तोड़ कुछ जावास्क्रिप्ट की आवश्यकता होगी। एक यूआरएल पर रीडायरेक्टिंग केवल मौजूदा फ्रेम को प्रभावित करेगा।

2

मैं HtmlHelper विस्तार की सिफारिश और सर्वर साइड में उसका प्रयोग करेंगे भी पुनर्निर्देश:

return Redirect(Url.YourExtension()); 
3

ही दृश्य में अपने दृश्य के लिए वापस अपने URL दर्रा या Url.RouteUrl() हो सकता है आप इस्तेमाल कर सकते हैं।

इसलिए उदाहरण के लिए ...

 
public ActionResult Handback() 
{ 
    return View(your_absolute_url); 
} 

फिर अपने दृश्य में एक रीडायरेक्ट करने के लिए इस मान का उपयोग कर सकते हैं। माता-पिता का पता लगाने के लिए जावास्क्रिप्ट का उपयोग करें, फिर स्थान को अन्य विंडो में वर्तमान विंडो में सेट करें। दृढ़ता से टाइप किए गए दृश्य का उपयोग करने के बजाय नीचे दिया गया उदाहरण, रूटयूआरएल का उपयोग किसी विशिष्ट नियंत्रक/क्रिया में करता है।

उम्मीद है कि इससे मदद मिलती है।

 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
    <script type="text/javascript"> 
     if (window.parent != null) 
      window.parent.location = '<%= Url.RouteUrl(new { 
        controller = "MyController", action = "MyAction" }) %>'; 
     else 
      window.location = '<%= Url.RouteUrl(new { 
        controller = "MyController", action = "MyAction" }) %>'; 
    </script> 
</body> 
</html> 
संबंधित मुद्दे