2016-04-01 9 views
0

Wir haben eine alte benutzerdefinierte ASP-Intranetseite, in der wir auf unsere internen Datenbanken zugreifen und eine HTML-Seite einrichten, um andere Intranetsites wie ccnet, wiki laden zu können usw. mit < iframe/> Tags, über das statische Menü oben auf der Seite.
Beispiel Legacy-Code:
Menu.asp:Laden einer Nicht-MVC-Intranetwebseite in MVC View

<body topmargin="0" and leftmargin="0"> 
<div id="header"> 
    <a href="default.asp" id="logo"> 
    <img src="Images/Home.png" alt="Bam! Home" width="40" height="40"/> 
    </a> 
    <ul id="NavMenu"> 
      <li><a>DB tasks</a> 
       <ul> 
        <li><a href="ccnet.asp?Target=RestoreBak">Restore .bak</a></li> 
        <li><a href="ccnet.asp?Target=RestoreSqb">Restore .sqb</a></li> 
        <li><a href="ccnet.asp?Target=CreateDbSnapshot">Create Snapshot</a></li> 
        <li><a href="ccnet.asp?Target=RevertToDbSnapshot">Revert to Snapshot</a></li> 
        <li><a href="ccnet.asp?Target=DeleteDbSnapshot">Delete Snapshot</a></li> 
       </ul> 
      </li> 
      <li><a>General</a> 
       <ul> 
        <li><a href="ccnet.asp?Target=Wiki">Wiki</a></li> 
       </ul> 
      </li> 
    </ul> 
</div> 

ccnet.asp (die Intranet-Seite in einem Iframe laden das Menü zu behalten):

<!-- #include file = "common.asp" --> 

<html> 

<head> 
    <title><% 

'Common DB tasks: 
    if Request("Target") = "CreateDbSnapshot" then 
      Response.write "Create Db Snapshot" 

    elseif Request("Target") = "RevertToDbSnapshot" then 
      Response.write "Revert To Db Snapshot" 

    elseif Request("Target") = "DeleteDbSnapshot" then 
      Response.write "Delete Db Snapshot" 

    elseif Request("Target") = "RestoreBak" then 
      Response.write "Restore Bak" 

    elseif Request("Target") = "RestoreSqb" then 
      Response.write "Restore Sqb" 

'General 
    elseif Request("Target") = "Wiki" then 
      Response.write "Wiki" 

'Final just incase there is an unavailable option: 
    else 
      response.write "DBServer CCNet" 
    end if 
    %></title> 
    <link rel="stylesheet" type="text/css" href="common.css"/> 
</head> 

<!--#include file ="menu.asp"--> 
<body> 
    <% 

    dim iFrameTargetSrc 
'Common DB tasks: 
    if Request("Target") = "CreateDbSnapshot" then 
      iFrameTargetSrc = "http://DBServer/ccnet/server/local/project/1.%20Create%20DB%20Snapshot/ViewProjectReport.aspx" 

    elseif Request("Target") = "RevertToDbSnapshot" then 
      iFrameTargetSrc = "http://DBServer/ccnet/server/local/project/3.%20Delete%20DB%20Snapshot/ViewProjectReport.aspx" 

    elseif Request("Target") = "DeleteDbSnapshot" then 
      iFrameTargetSrc = "http://DBServer/ccnet/server/local/project/FS%20Backup%20SQB/ViewProjectReport.aspx" 

    elseif Request("Target") = "RestoreBak" then 
      iFrameTargetSrc = "http://DBServer/ccnet/server/local/project/Restore%20DB/ViewProjectReport.aspx" 

    elseif Request("Target") = "RestoreSqb" then 
      iFrameTargetSrc = "http://DBServer/ccnet/server/local/project/Restore%20SQB/ViewProjectReport.aspx" 

'General 
    elseif Request("Target") = "Wiki" then 
      iFrameTargetSrc = "http://wiki/sites/CompanyWiki/SitePages/newhome.aspx" 

'Final just incase there is an unavailable option: 
    else 
      iFrameTargetSrc = "http://DBServer/ccnet/ViewFarmReport.aspx" 
      response.write "Cannot find requested target " & Request("Target") & "." 
    end if 

    %> 
    <iframe src="<%response.write iFrameTargetSrc%>" seamless="true" frameborder="0" width="100%" height="94%"></iframe> 

</body> 

</html> 

Wir begonnen haben, zu konvertieren Diese Legacy-Intranet-Site für MVC5, aber was ich nicht herausfinden kann, ist, wie man eine Ansicht erstellen kann, die die ccnet- und andere Intranet-Seiten in einer Ansicht laden kann, die die gesamte Seite umfasst, wenn der Link aus dem Menü ausgewählt wird. Ansichten benötigen die Daten vom Controller. Wie übergebe ich die Informationen an den Controller und lade die Ansicht mit der Nicht-MVC-Intranet-Site?

Ich versuche, die Menüoption auf der Seite _Layout.cshtml hinzuzufügen, habe aber nichts gefunden, das mich in die richtige Richtung weisen kann, wie dies zu implementieren ist.

Jeder Ratschlag, der einen Link enthält, der mir zeigen kann, wie man mit Beispielen oder Lösungen hier veröffentlicht wird, wird sehr geschätzt.

Antwort

0

Sie können wie diese

public ActionResult LoadExternalSystem(string identifier) 
{ 
    switch (identifier.ToLower()) 
    { 
    case "wiki": 
    { 
     ViewBag.LoadUrl = "http://wiki.somewhere"; 
     break; 
    } 
    case "othersystem": 
     { 
     ViewBag.LoadUrl = "http://othersystem"; 
     break; 
     } 
    } 
    return View(); 

} 

eine Aktionsmethode zu einer Steuerung Dann fügen Sie für diese Aktion eine Ansicht erstellen, dann die für Ihr Menü folgende verwenden wie die folgende

@{ 
    ViewBag.Title = "LoadExternalSystem"; 
} 

<iframe src="@ViewBag.LoadUrl"></iframe> 

sieht

<ul> 
    <li><a href="@Url.Action("LoadExternalSystem",new {identifier="wiki"})">wiki</a></li> 
    <li><a href="@Url.Action("LoadExternalSystem",new {identifier="othersystem"})">Other system</a></li> 
</ul> 
+0

Die Seite scheint den iframe, aber nicht die src-Verknüpfung zu enthalten.