Uloženie premennej na serveri   zodpovězená otázka

ASP.NET WebForms

Dobrý deň.

Ako by som mohol uložiť premennú na serveri a poto ju znova načítať?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Přesně k tomu slouží ViewState.

Uložení:

ViewState("mojeHodnota") = 1234   'umí to jakýkoliv datový typ

Načtení:

Dim prom As Integer = ViewState("mojeHodnota")
nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Nejako mi to nefunguje:

Partial Class _Default
    Inherits System.Web.UI.Page
    Dim p As String
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If ViewState("Pok") Is Nothing Then
            Me.Label1.Text = "Nie je"
        Else
            Me.Label1.Text = Me.ViewState("Pok")
        End If
    End Sub

    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        p = Me.TextBox1.Text
        Me.ViewState("Pok") = p
    End Sub
End Class

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>

<!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>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp;
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" /></div>
    </form>
</body>
</html>

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Doporučuji, abyste si přečetl druhý díl seriálu, tam je tato věc popsaná. Pokud potřebujete hodnotu z textového pole přepsat do komponenty Label, stačí v události tlačítka tento kód:

Label1.Text = TextBox1.Text

Komponenty si svoje hodnoty vlastností pamatují samy. Pokud potřebujete vyloženě proměnnou, použijte kód, který jsem Vám poradil. Jediný problém je v tom, že událost Load se vyvolá dřív než událost Button1_Click. Pokud potřebujete zareagovat až po zpracování stisku tlačítka, použijte událost Page_LoadComplete.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ďakujem za odpoveď a úpravu mojej otázky.

Od svojho kódu očákavam, že uloží obsah TextBoxu na server a pri ďalšom otvorení stránky sa tent obsah zobrazí v Label1.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Naozaj je to taká blbá otázka. Veď len chcem uložiť premennú na serveri a potom neskôr si ju prečítať. Kod ktorý som uviedol to nerobí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ale udělá to, jenže na to je potřeba pochopit trochu zvnitřku ASP.NET, vydrž do dalšího dílu seriálu, bude už brzy.

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

Ďakujem. Teším sa.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Skúsil som to inak. Asi to funguje, ale cítim v tom nejaku zradu.

Partial Class _Default
    Inherits System.Web.UI.Page
    Dim p As String
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (Not Application("Uloz") Is Nothing) Then
            Dim Uloz As String = Application("Uloz")
            Me.Label1.Text = Uloz
        Else
            Me.Label1.Text = "Nie je tu nic"
        End If
        Me.Label2.Text = Request.UserHostAddress.ToString()
    End Sub
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Application("Uloz") = Me.TextBox1.Text
        Me.Label1.Text = Me.TextBox1.Text
        Me.TextBox1.Text = ""
    End Sub
End Class

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ajaj, zdá se mi, že v celém tomto vlákně se lehce mlží a vznikají potom divoké konstrukce.

Používání třídy HttpApplicationState a její vlastnosti Application je zde krajně nevhodné - jsou to vlastně globální proměnné přístupné všem uživatelům aplikace a mohlo by docházet ke kolizím.

Viewstate zase řeší ukládání v rámci jedné aspx stránky - přechodem na jinou aspx tedy data ztratím.

Jednou z možností je ukládat data do Session.

Doporučuji následující odkazy k prostudování.

http://msdn2.microsoft.com/en-us/library... - Session

http://msdn2.microsoft.com/en-us/library... - Application

http://msdn2.microsoft.com/en-us/library... - ASP.NET state management

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Ajaj. Ďakujem za odpoveď. Preštudujem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Málo kódu, veľa angličtiny. Potrápim sa.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ďakujem, funguje.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback