2017-11-14 5 views
1

Ich versuche, an einem Web-App-Projekt zu arbeiten und herauszufinden, wie ich meine Antwort auf der zweiten Webseite anzeigen kann.Wie teile ich Daten zwischen zwei Webseiten?

Ich habe ein Textfeld auf meine erste Webseite gestellt und die Codierung meiner Anwendung korrigiert, da ich die richtigen Antworten in der Textbox erhalten habe, nachdem ich sie ausgepackt habe.

Idealerweise möchte ich diese Textbox entfernen und möchte meine Antworten, die ich in meinem Textfeld auf einem Etikett in der nächsten Webseite angezeigt habe. Hier ist der Berechnungsteil meines Codes;

var cost = ((int)duration.TotalMinutes) * 0.35m; 
       txtCost.Text = cost.ToString("c"); 

Ich möchte meine Antwort auf meiner zweiten Webseite erscheinen lassen und sie nicht in der ersten anzeigen lassen. Ich habe versucht, Session["Cost"] = cost; auf der Schaltfläche klicken Ereignishandler der ersten Webseite und dies auf der zweiten Webseite, aber jedes Mal, wenn ich es debuggen und laufen, bekomme ich immer $ 0,00 auf meinem Etikett angezeigt. Kann mir jemand helfen, das zu beheben?

+0

Ihre Hauptfrage besagt, dass zwei Webanwendungen und das von Ihnen erwähnte Szenario für zwei Webseiten gilt. Vielleicht kann mehr/vollständiger Code Ihnen helfen. – Amit

+0

Sprechen wir tatsächlich über separate Webanwendungen oder verschiedene Seiten innerhalb ein und derselben Webanwendung? Ist diese WebForms- oder MVC-Anwendung auch? –

+0

Mehrseitige Anwendung Jungs ... sorry darüber ... nur zwei Webseiten –

Antwort

0

Freigabewert zwischen zwei Ansichten in MVC-Anwendung, versuchen Sie folgende

// To save into the Cache  
System.Web.HttpContext.Current.Cache["CostKey"] = cost; 

// To retrieve Cache Value 
var cachedValue = System.Web.HttpContext.Current.Cache["CostKey"] as double; 

Für Session State, haben einen Blick auf diese link

+0

Können Sie erklären, was der Name "CostKey" ist. weil meins sagt, dass es nicht im Kontext existiert –

+0

Sie können einen beliebigen Namen geben. CostKey ist nur ein Name und wird verwendet, wenn Sie Ihren Wert abrufen. Ich habe meine Antwort geändert. Schlüsselname soll vom Zeichenkettentyp sein. Mein Fehler. –

0

In ASP.NET WebForms-Anwendung können Sie Daten übergeben um in verschiedenen Wege:

  1. Cache

    Se Die Lernkurve beantworten Beispiele. Das Objekt, das in den Cache gestellt wird, wird jedoch nicht garantiert, dass es erneut gefunden wird, wenn auf dem Server ein Speichermangel oder Ähnliches auftritt. ASP.NET verwaltet den Cache und entfernt Objekte selbst, um die Speicherverfügbarkeit zu gewährleisten. Dies steht im Gegensatz zu ApplicationState und SessionState wo die Objekte aufbewahrt werden, bis sie manuell entfernt werden, oder Application endet oder Session abläuft.

  2. Session und Anwendungs ​​Staaten

    Sie ein beliebiges Objekt in den SessionState object setzen können und es an anderer Stelle in Ihrem Code abrufen. Sie müssen es jedoch entsprechend umsetzen, da SessionStateobject -s akzeptiert. Z.B. Wenn Sie eine Nummer speichern, müssen Sie beim Casting selbst das Casting durchführen, so wie Sie es bereits getan haben. Der Grund, warum es nicht funktioniert, ist vielleicht, dass Sie versuchen, es aus SessionState eines anderen Benutzers abzurufen. Ja, die SessionState ist eine benutzerspezifische Struktur. Wenn Sie den Wert als von einem Gerät hinzufügen müssen und es auf einem anderen verwenden, use ApplicationState:

    Application["cost"] = cost; 
    
  3. Umleiten Antwort

    Mit dieser Technik können Sie den Browser erzwingen eine andere Seite vom Server anfordern und Geben Sie die vollständige Abfragezeichenfolge einschließlich der von Ihnen benötigten Variablen an. Z.B. :

    var destination = Server.UrlEncode("/someOtherPage.aspx?cost=34.65"); 
    Response.Redirect(destination); 
    

    Als Alternative können Sie Server.Transfer("someOtherPage.aspx") verwenden, um die Hin- und Rück zu speichern. In diesem Fall ändert der Browser jedoch nicht die Adresse in der Adressleiste, so dass der Benutzer irregeführt wird, dass er eine Seite durchsucht, aber tatsächlich ist es die someOtherPage.aspx.

Verwandte Themen