webForumDet fria alternativet

Elaka Kakor!

.NET

7 svar · 325 visningar · startad av Marckus

Medlem sedan dec. 2001144 inlägg
Frågan#1

Hejsan!

Har lite problem med kakor i ASP.net!

Koden för att sätta en kak gör jag på följande sätt!

HttpCookie myCookie = new HttpCookie("intraNet");
myCookie.Values.Add("Datum",now.ToString("d"));
Response.AppendCookie(myCookie);

Hämtar kakan på följande sätt!

HttpCookie myFetchCookie = Request.Cookies["intraNet"];
string kakString = myFetchCookie.Values["Datum"];

Sen kollar jag med en if

if(kakString.ToString() != now.ToString("d"))
{
}

Problemet är att den uppdaterar kakan hela tiden så den kör aldrig koden i IF strängen .. Jag vill alltså att den kör if strängkoden en gång och sen sätta kakan och dagen efter tillåta den köra if strängen igen..

Om ni behöver bättre förklaring säg till!!

Mvh
Marcus

Medlem sedan dec. 2001144 inlägg
#2

Just det.. Error jag får är

Object reference not set to an instance of an object.

Medlem sedan juni 20011 732 inlägg
#3

Nu skapar du ju en ny kaka varje gång innan du går in i din ifsats. Sätt en ifsats runt den kod som skapar kakan där du kollar om kakan redan finns... gör den det så hoppar du vidare utan att skapa en ny!

if(Request.Cookies["intraNet"] == null) {
  HttpCookie myCookie = new HttpCookie("intraNet"); 
  myCookie.Values.Add("Datum",now.ToString("d")); 
  Response.AppendCookie(myCookie); 
}

Sen behöver du inte göra om din kakstring till en sträng eftersom det är den ju redan!

if(kakString != now.ToString("d"))
Medlem sedan dec. 2001144 inlägg
#4

Tackar! ..
Problemet är att han fortfarande skippar att köra självaste if satsen där jag har annan kod !

Och om jag slänger in cookie biten i självaste den andra if satsen så får jag Object reference not set to an instance of an object.

Mvh
Marcus

Medlem sedan juni 20011 732 inlägg
#5

Jo, men kaksträng är väl lika med now.ToString("d"), alltså är villkoert kakString != now.ToString("d") inte giltigt.

Skriv ut dina variabler innan if-satsen så ser du vad du jämför med!

Response.Write(kakString + " : " + now.ToString("d"));

Marckus skrev:

Och om jag slänger in cookie biten i självaste den andra if satsen så får jag Object reference not set to an instance of an object.

Vet inte om jag förstår hur du försöker göra riktigt, kan du visa med kod hur du har gjort?

Medlem sedan dec. 2001144 inlägg
#6

Sitter och skriver om det mesta igen..

Det jag vill ha är alltså

Kolla om kakan finns, Om kaka finns, kolla värdet.. Om värdet är äldre än dagens värde (Datum) så kör koden!

Om värdet är samma som dagens värde, Kör inte koden.

Om kakan inte finns, kör koden och ge en kaka till personen så han har en nästa gång han kommer tillbaka..

Mvh
Marcus

Medlem sedan dec. 2001144 inlägg
#7

if(Request.Cookies["intraNet"] == null)
{
HttpCookie myCookie = new HttpCookie("intraNet");
myCookie.Values.Add("Datum",now.ToString("d"));
myCookie.Expires = now.AddDays(1);
Response.AppendCookie(myCookie);
}

		HttpCookie myFetchCookie = Request.Cookies\["intraNet"\];
		string kakString = myFetchCookie.Values\["Datum"\];

		if (kakString != now.ToString("d"))
			{

				SqlConnection myConn = new SqlConnection("server=NETDOT;database=Development;user id=marckus;password=lösenordhär");;
				string myQuery = "select pri from viktig where pri = '5'";
				SqlDataAdapter myCommand = new SqlDataAdapter(myQuery,myConn);

				myConn.Open();
		
				DataSet ds = new DataSet();
				myCommand.Fill(ds);

				if(ds.Tables\[0\].Rows.Count \>= 1)
				{
					string s = "\<script language=JavaScript\>";
					s += "function ny_sida_auto(url,width,height)";
					s += "{";
					s += "egenskaper='toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizeable=no';";
					s += "egenskaper+=',width='+width;";
					s += "egenskaper+=',height='+height;";
					s += "unik=new Date();";
					s += "unik=unik.getSeconds()+'\_'+unik.getMinutes()+'\_'+unik.getHours();";
					s += "window.open(url,unik,egenskaper);";
					s += "}";
					s += "adress='http://192.168.0.15/viktig/show.aspx';";
					s += "bredd=350;";
					s += "hojd=300;";
					s += "ny_sida_auto(adress,bredd,hojd);";
					s += "\</script\>";
					RegisterStartupScript("script1", s);
				}

				myConn.Close();
				myConn.Dispose();
			}

Så ser koden ut .. jag har upptäckt att den ger mig "Object reference not set to an instance of an object." om cookien inte finns men om den finns så har cookien samma värde som dagens värde och då kör han inte koden som sagt!

Får peta vidare men nu har ni koden..

Mvh
Marcus

Medlem sedan dec. 2001144 inlägg
#8

Puuh! Löste det.. Istället för

if(Request.Cookies["intraNet"] == null)
{
HttpCookie myCookie = new HttpCookie("intraNet");
myCookie.Values.Add("Datum",now.ToString("d"));
myCookie.Expires = now.AddDays(1);
Response.AppendCookie(myCookie);
}

HttpCookie myFetchCookie = Request.Cookies["intraNet"];
string kakString = myFetchCookie.Values["Datum"];

if (kakString != now.ToString("d")) {}

så kör jag nu

if(Request.Cookies["intraNet"] == null)
{
HttpCookie myCookie = new HttpCookie("intraNet");
myCookie.Values.Add("Checked", "0");
Response.AppendCookie(myCookie);
}

HttpCookie myFetchCookie = Request.Cookies["intraNet"];
string kakString = myFetchCookie.Values["Checked"];

if (kakString != "1")
{
HttpCookie myCookie = new HttpCookie("intraNet");
myCookie.Values.Add("Checked", "1");
myCookie.Expires = now.AddHours(12);
Response.AppendCookie(myCookie);
}

Då funkar det fin fint!

Mvh
Marcus

282 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
139 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
142 ms — ändringar (db)