2017-04-07 4 views
1

Ich habe eine ASPX-Seite in einem Ordner namens "Graphics".Web App ändert URL automatisch, wenn POST/Submit ausgelöst wird

In dieser Seite (DisplayArena.aspx), verwende ich jQuery.load zu "load" eine andere ASPX-Seite in ein div wie folgt aus:

//in DisplayArena.aspx 
//load from the "BossEncounters" folder 
$(document).ready(function() { 
    $("#mainGamingArena").load('../BossEncounters/encounterGenerator.aspx?ID=<%= Session("currentID") %>'); 
}); 

Es lädt die Begegnung Generator in Ordnung, aber wenn ich brauche Um etwas auf dieser Seite zu senden/posten, denkt es, dass die URL "/Graphics/encounterGenerator.aspx" statt "/BossEncounters/encounterGenerator.aspx" sein sollte.

So beende ich oben immer ein 404-Fehler und die Fehlerseite sagt:

angeforderte URL: /Graphics/encounterGenerator.aspx

Ich bin nicht sicher, wo oder warum es den Pfad zu ändern so wie das. Es ist nicht irgendwo in meinem Code, es muss eine Art von Verarbeitung hinter den Kulissen sein und ich kann es nicht finden.

Mein Projekt ist Visual Studio-Setup ist wie folgt:

Game_WebApp 
    /Graphics 
    /BossEncounters 

Irgendwelche Ideen?

+0

Verwenden Sie ein IFrame anstelle von div –

Antwort

1

Sie können keine andere ASPX-Seite dynamisch auf eine ASPX-Seite laden. Es endet mit zwei Form-Tag wie folgt -

<form method="post" ..> 
    <form method="post" ..> 
    ... 
    </form> 
</form> 

Als Ergebnis können Sie die Seite nicht zurück auf den Server buchen. Die ASP.NET-Webformulartechnologie lässt zwei Formular-Tags auf einer einzelnen Seite nicht zu. Du kannst nichts dagegen tun.

+0

Oh, ich verstehe. Auch wenn auf der Seite "encounterGenerator.aspx" kein Formular vorhanden ist? Ich übergebe/posten über einen JavaScript/Jquery Ajax Aufruf an einen API-Controller. Ich habe kein Element auf dieser Seite. – SkyeBoniwell

+0

Obwohl beim ersten Laden der Seite kein Tag angezeigt wird, endet der Browser nach dem Laden der Funktion mit zwei Formular-Tags. Vielleicht möchten Sie sich verschiedene Technologien wie ASP.NET MVC ansehen. – Win

+0

Oh ich verstehe. Also könnte ich das beheben, indem ich die ASPX-Datei in eine einfache HTML-Seite ändere. – SkyeBoniwell

1

Wenn Sie einen Teil einer Seite benötigen, versuchen Sie Ihre eigene UserControl zu implementieren, genau deshalb wurden sie eingeführt. Es ist sehr ähnlich zu aspx, mit demselben Ereigniszyklus, und es kann leicht sein created from a web page.

Ihr Code wird sein wie:

<!-- DisplayArena.aspx --> 
<%@ Page Language="C#" %> 
<%@ Register TagPrefix="uc" TagName="Boss" 
    Src="~/Controls/EncounterGenerator.ascx" %> 
<html> 
<body> 
<form runat="server"> 
    <uc:Boss id="boss1" 
     runat="server" 
    /> 
</form> 
</body> 

Session verfügbar sein wird, so dass keine Notwendigkeit, mit Markup zu übergeben. Sie können auch einige Parameter für Ihr Benutzersteuerelement über Eigenschaften bereitstellen. Ich empfehle Ihnen, den gesamten MSDN-Abschnitt diesbezüglich zu lesen.

Eine andere Möglichkeit, dies zu tun, ist eine Server.Transfer Methode zu verwenden, aber das ruft tatsächlich zwei Webseiten nacheinander auf, nicht eine innerhalb einer anderen.

Verwandte Themen