Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


nybörjarproblem med variabel

Postades av 2007-11-04 13:16:11 - Marcus Wennerberg, i forum c# (c-sharp), Tråden har 7 Kommentarer och lästs av 2060 personer

När jag trycker på knappen som finns på sidan skrivs variablen slumpat över och blir 0.

har koden:
<code>
public partial class _Default : System.Web.UI.Page
{
private int slumpat;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
myRandom();
}
lblMsg.Text = this.slumpat.ToString();
}


protected void myRandom()
{
Random r = new Random();
this.slumpat = r.Next(99) + 1;
}


}

</code>

Hur får jag det slumpade talet att "stanna kvar"?

Tacksam för all hjälp :D


Svara

Sv: nybörjarproblem med variabel

Postades av 2007-11-05 08:12:18 - Chris Klug

Du behöver spara undan variabeln mellan anropen. ASP.NET är stateless och sparar inte värdena per automatik mellan requests. Du har ett par alternativ. Spara variabeln i en Sessionsvariabel typ:
<code>
Session["slumptal"] = slumpat;
</code>

eller i ett hiddenfält...

eller i ViewState typ:
<code>
ViewState["slumptal"] = slumpat;
</code>
personligen skulle jag nog skriva om och göra följande typ:

<code>
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
int slump;
if (!IsPostBack)
{
slump = GetRandom();
ViewState["slump"] = slump;
}
else
{
slump = (int)ViewState["slump"];
}
lblMsg.Text = slump .ToString();
}


protected int GetRandom()
{
Random r = new Random();
return r.Next(99) + 1;
}


}
</code>

Kanske inte helt perfekt lösning eller skrivet, men det är snabbt och enkelt.


Svara

Sv: nybörjarproblem med variabel

Postades av 2007-11-05 14:20:51 - Andreas Petersson

Anledningen till att du får talet 0 vid postback är för att du inte gett din variabel något värde än.
För att lösa det kan du flytta in "lblMsg.Text = this.slumpat.ToString();" innanför din if-sats där du kontrollerar ifall det är en postback.

För att illustrera med lite kod kan du använda dig av följande:

<code>
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Random r = new Random();
lblMsg.Text = (r.Next(99) + 1).ToString();
}

}
}
</code>

Jag hoppas jag uppfattade ditt problem rätt.

Edit: Om du sedan vill ha tillbaka ditt slumpade värde vid postback hämtar du det via "lblMsg.Text".


Svara

Sv:nybörjarproblem med variabel

Postades av 2007-11-05 15:44:26 - Marcus Wennerberg

ok, tack för hjälpen. Nu fungerar det som det ska. nästa problem jag har är:

<code>
public partial class _Default : System.Web.UI.Page
{
private StringBuilder stGissade = new StringBuilder();

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["slump"] = GetRandom();
ViewState["forsok"] = 7;
}
lblInfo.Text = "Gissning nr. " + ViewState["forsok"] + ".";
}

protected void btnGissa_Click(object sender, EventArgs e)
{
try
{
int gissat = int.Parse(txtTal.Text);
int forsok = (int)ViewState["forsok"] - 1;
int slump = (int)ViewState["slump"];
ViewState["forsok"] = forsok;

stGissade.Append(gissat);

if (forsok > 0 && slump == gissat)
{
lblMsg.Text = "Grattis. Du klararde det på " + forsok + "försök";
end();
}

lblGissat.Text = stGissade.ToString();
}
catch (FormatException fe)
{
lblMsg.Text = "Strängen som skickades in var i ett felaktigt format";
}
}


protected int GetRandom()
{
Random r = new Random();
return r.Next(99) + 1;
}

}
</code>

Problemet är nu att jag vill spara alla gissade tal i en stringbuilder (stGissade.Append(gissat);)
men som innan skrivs det över varje gång man trycker på knappen.

Hur löser jag detta??

Tacksam för all hjälp


Svara

Sv: nybörjarproblem med variabel

Postades av 2007-11-06 10:49:45 - Janne Aho

Snutten körs väl vid varje postback?

<code>
private StringBuilder stGissade = new StringBuilder();
</code>


Svara

Sv:nybörjarproblem med variabel

Postades av 2007-11-06 16:47:56 - Marcus Wennerberg

jo, den körs varje gång. Hur gör jag så innehållet stannar kvar i stringbuildern?


Svara

Sv: nybörjarproblem med variabel

Postades av 2007-11-07 08:42:26 - Chris Klug

Lägg in värde från din StringBuilder i ViewState och läs upp den vid postback... Precis som slumptalet... Eller så gör du som Andreas föreslog. Läs av värdet i din label och bygg vidare på det. Du behöver dessutom inte använda en StringBuilder när du bara gör ett fåtal konkateneringar per postback. Då är det effektivare med en vanlig sträng... Förslag:

<code>
public partial class _Default : System.Web.UI.Page
{
private string stGissade;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["slump"] = GetRandom();
ViewState["forsok"] = 7;
}
else
{
stGissade = (string)ViewState["stGissade "];
}
lblInfo.Text = "Gissning nr. " + ViewState["forsok"] + ".";
}

protected void btnGissa_Click(object sender, EventArgs e)
{
try
{
int gissat = int.Parse(txtTal.Text);
int forsok = (int)ViewState["forsok"] - 1;
int slump = (int)ViewState["slump"];
ViewState["forsok"] = forsok;

stGissade += gissat.ToString();

if (forsok > 0 && slump == gissat)
{
lblMsg.Text = "Grattis. Du klararde det på " + forsok + "försök";
end();
}

lblGissat.Text = stGissade;
ViewState["stGissade "] = stGissade;
}
catch (FormatException fe)
{
lblMsg.Text = "Strängen som skickades in var i ett felaktigt format";
}
}


protected int GetRandom()
{
Random r = new Random();
return r.Next(99) + 1;
}

}
</code>

alternativt

<code>
public partial class _Default : System.Web.UI.Page
{
private string stGissade;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["slump"] = GetRandom();
ViewState["forsok"] = 7;
}
else
{
stGissade = lblGissat.Text;
}
lblInfo.Text = "Gissning nr. " + ViewState["forsok"] + ".";
}

protected void btnGissa_Click(object sender, EventArgs e)
{
try
{
int gissat = int.Parse(txtTal.Text);
int forsok = (int)ViewState["forsok"] - 1;
int slump = (int)ViewState["slump"];
ViewState["forsok"] = forsok;

stGissade += gissat.ToString();

if (forsok > 0 && slump == gissat)
{
lblMsg.Text = "Grattis. Du klararde det på " + forsok + "försök";
end();
}

lblGissat.Text = stGissade;
}
catch (FormatException fe)
{
lblMsg.Text = "Strängen som skickades in var i ett felaktigt format";
}
}


protected int GetRandom()
{
Random r = new Random();
return r.Next(99) + 1;
}

}
</code>

Nått sånt bör fungera...


Svara

Sv:nybörjarproblem med variabel

Postades av 2007-11-13 21:35:27 - Marcus Wennerberg

tack, nu funkar den perfekt


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 718
27 958
271 751
3 322
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies