2013-03-16 5 views
5

लोड करने के लिए एक एमवीसी व्यू में iframe मेरे पास प्रोडक्ट कंट्रोलर नामक एक नियंत्रक है और मैं इंडेक्स व्यू को वेबफॉर्म 1.aspx नामक वेब फॉर्म के साथ लोड करने के लिए इंडेक्स विधि का उपयोग करता हूं, इंडेक्स व्यू सेट अप किया गया है और ठीक से काम कर रहा है। अब मैं WebForm1.aspx की सामग्री को प्रदर्शित करने के लिए इंडेक्स व्यू में एक आईफ्रेम जोड़ना चाहता हूं। दोनों विचार एमवीसी परियोजना में एक ही फ़ोल्डर दृश्य/उत्पाद में हैं।एएसपीनेट वेब फॉर्म

<iframe src="/ProductsController/Index?WebForm1.aspx" width="1000" height="400"> 

    </iframe> 

मेरे विचार/web.config के रूप में बगल में स्थित है: मैं निम्नलिखित किया

और वेबफ़ॉर्म विरासत के रूप में अगले है:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

फिर भी iframe एक त्रुटि संदेश प्रदर्शित करता है: "HTTP 404 - वह संसाधन जिसे आप ढूंढ रहे हैं (या इसकी निर्भरताओं में से एक) को हटाया जा सकता था एड, इसका नाम बदल गया था, या अस्थायी रूप से अनुपलब्ध है। "

मैं अपने Global.asax फ़ाइल के आगे लाइन को जोड़ने के लिए भी करने की कोशिश की:

RouteTable.Routes.RouteExistingFiles = true; 

लेकिन यह भी विफल रहा है,

मैं iFrame दिखाया गया लेकिन खाली पूर्ण उपयोग करने के लिए है मिल अनोखा तरीका अगले के रूप में भौतिक पथ:

<iframe src="C\:Folder1\Folder2\ ...\Views\Products\WebForm1.aspx" width="1000" height="400"> 

    </iframe> 

कोई बता सकता है कि यह क्यों काम नहीं करता है? और इसे किस प्रकार कार्यशील बनाया जाए? धन्यवाद।

उत्तर

1

आप Webform.aspx फ़ाइल के वास्तविक स्थान को इंगित कर सकते हैं।

<iframe src="/FolderPath/WebForm1.aspx" width="1000" height="400"> 

    </iframe> 

आपका कोड asssumes कि MVC क्रम एक फ़ोल्डर "ProductsController" कहा जाता है और "सूचकांक"

नामक एक उप फ़ोल्डर पर विचार करना चाहते हैं, तो आप WebForm1.aspx फ़ाइल है कि निर्देशिका संरचना, परिवर्तन में वास्तव में है src="/ProductsController/Index/WebForm1.aspx"

13

आपको स्रोत फ़ोल्डर से बाहर अपनी .aspx फ़ाइल (वेबफॉर्म) डालना चाहिए, क्योंकि आमतौर पर ब्राउज़र से किसी भी कॉल को "BlockViewHandler" (जिसे आप web.config फ़ाइल में देख सकते हैं) विचार फ़ोल्डर के)।

आपके द्वारा बनाए गए किसी अन्य फ़ोल्डर में, इसे नियंत्रक के बिना काम करना चाहिए। उदाहरण के लिए यदि आप इसे "/webforms/webform1.aspx" में डालते हैं तो वह पथ iframe का उपयोग करने वाला है।

अद्यतन यहाँ प्रश्न में नई जानकारी के साथ एक उदाहरण है, आशा है कि यह मदद कर सकते हैं:

नियंत्रक:

public class ProductsController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); //Razor file in Views/Products/Index.cshtml 
    } 

    public ActionResult ActionThatRetrieveAndAspx() 
    { 
     return View("WebForm1"); //Aspx file Views/Products/WebForm1.aspx 
    } 
} 

उत्पाद Index.html की सामग्री, aspx फ़ाइल बुला एक आईफ्रेम के माध्यम से:

@{ 
    ViewBag.Title = "Index title"; 
} 

<h2>Index</h2> 

Calling aspx file from iframe: 

<iframe src="@Url.Action("ActionThatRetrieveAndAspx","Products")" width="1000" height="400"></iframe> 

उत्पाद वेबफॉर्म 1 की सामग्री।aspx:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head runat="server"> 
     <title>Title</title> 
    </head> 
    <body style="background-color: #999999; padding: 10px;"> 
     This is ActionThatRetrieveAndAspx WebForm1.aspx 
    </body> 
</html> 
+0

"/webforms/webform1.aspx" में खुले में नेविगेशन लिंक बना कर वापस अपने MVC वेबसाइट पर जा सकते हैं, आप क्या मतलब है है वह वेबफॉर्म सीधे रूट रूट पथ में है? यदि ऐसा है तो यह काम नहीं करता है। –

+1

यह दूसरा जवाब है ... मेरा मतलब यह है कि यदि आपके पास System.Web.UI.Page (WebForm1.aspx) से प्राप्त एएसपीएक्स फ़ाइल है, तो उस तरह की फ़ाइल को दृश्य फ़ोल्डर के बाहर रखा जाना चाहिए, इस तरह आप इसे नियंत्रक के माध्यम से अनुरोध पास किए बिना "सामान्य" यूआरएल द्वारा कॉल कर सकते हैं ... अन्य प्रकार के एएसपीएक्स वे हैं जो "System.Web.Mvc.ViewPage" से प्राप्त होते हैं, वे फ़ाइलें रेजर फ़ाइलों के रूप में व्यवहार करती हैं, उन्हें रखा जाना चाहिए विचार फ़ोल्डर में और अनुरोध एक नियंत्रक के माध्यम से है। – jherrera

+0

स्पष्टीकरण के लिए धन्यवाद, मेरे प्रश्न को अपडेट किया गया, कृपया एक नज़र डालें। –

0

मैं MVC परियोजना के रूट फ़ोल्डर में वेबफ़ॉर्म डाल दिया और इसे इस तरह कहते हैं:

<iframe src="~/webform.aspx"...></iframe> 

मैं नियंत्रक में इसे संदर्भ नहीं है।

इस तकनीक के लिए एक अच्छा बोनस है कि आप आसानी से वेबफ़ॉर्म target = "_ जनक"

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