---
title: "Ajax + cookies"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/160507-ajax-cookies"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "MagnusJ"
published: "2007-05-20T00:25:57.000Z"
updated: "2007-05-22T21:51:52.000Z"
replies: 10
views: 457
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/160507-ajax-cookies"
---

# Ajax + cookies

## #1 — MagnusJ, 2007-05-20T00:25Z

Tjena,

Jag har ett litet problem. Jag har en DropDownList som jag har för att ändra ett värde på en cookie. Den fungerar även som en trigger för att uppdatera en UpdatePanel, men när jag skriver ut värdet så är det så att den alltid är ett steg efter. Första gången jag markerar någonting så händer det ingenting och andra gången jag markar nått så blir värdet det jag markerade första gången. Vet någon hur man kan få till det? Jag tror att det har att göra med IsPostBack, så jag har provat att sätta dit det, men jag fick inte till det.

Permalänk: https://www.webforum.nu/p/160507

## #2 — wally_91, 2007-05-20T07:16Z

Hur ser din kod ut? Det skulle nämligen hjälpa avsevärt!

Permalänk: https://www.webforum.nu/p/1979205

## #3 — butiko, 2007-05-20T08:54Z

> **MagnusJ skrev:**
>
> Tjena,
> Vet någon hur man kan få till det? Jag tror att det har att göra med IsPostBack, så jag har provat att sätta dit det, men jag fick inte till det.

Ja, antagligen, tänk på i vilken ordning till kod exekveras (pageload före en funktion kopplad till onclick i en button exempelvis).

Permalänk: https://www.webforum.nu/p/1979219

## #4 — MagnusJ, 2007-05-20T09:31Z

Jag har inte gjort så mycket än, utan bara försöker få det att funka. Så här ser koden ut

```
    <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="true">
    <asp:ListItem>Välj...</asp:ListItem>
    <asp:ListItem>Ja</asp:ListItem>
    <asp:ListItem>Nej</asp:ListItem>
    </asp:DropDownList></p>

        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
        <asp:Label id="label1" runat="server"></asp:Label>
        </ContentTemplate>
            <Triggers>
            <asp:AsyncPostBackTrigger ControlID="DropDownList1" EventName="SelectedIndexChanged" />
            </Triggers>
            </asp:UpdatePanel>
```

```

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!(Page.IsPostBack))
        {
            label1.Text = Request.Cookies["Varde"].Value;
        }
        else
        {
            label1.Text = Request.Cookies["Varde"].Value;
        }
    }

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string strItem = DropDownList1.SelectedItem.Value;

        Response.Cookies["Varde"].Value = strItem;
        Response.Cookies["Varde"].Expires = DateTime.Now.AddYears(30);
    }
```

Sedan undrar jag lite om det går att fixa så att man inte kan markera ListItem Välj utan att den bara är där för att se vad det hela ska användas till.

Permalänk: https://www.webforum.nu/p/1979228

## #5 — butiko, 2007-05-21T09:06Z

Den där if-satsen har du ingen nytta av... du gör ju samma sak oavsett om villkoret är sant eller falskt!!   :p 

Pageload körs \_innan\_ DropDownList1_SelectedIndexChanged, därför får du en eftersläpning. Med din lösning sätter du texten i din label till värdet som fanns i cookien innan den senaste ändringen. Så här kan du göra:

```

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            label1.Text = Request.Cookies["Varde"].Value;
       

    protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        string strItem = DropDownList1.SelectedItem.Value;
        label1.Text = strItem;

        Response.Cookies["Varde"].Value = strItem;
        Response.Cookies["Varde"].Expires = DateTime.Now.AddYears(30);
    }
```

Permalänk: https://www.webforum.nu/p/1979541

## #6 — MagnusJ, 2007-05-21T09:38Z

Tackar, funkade perfekt. 

Men jag har en liten till fråga. Vad kan man använda sig för något om man vill skriva ut värdet på flera ställen sedan att det inte ska skapas någon annan html-kod än det som skrivs ut?

Permalänk: https://www.webforum.nu/p/1979551

## #7 — butiko, 2007-05-21T09:44Z

En asp:Literal genererar ingen annan kod än den text du stoppar in i den:

\<asp:Literal id="Literal1" runat="Server" /\>

Permalänk: https://www.webforum.nu/p/1979552

## #8 — MagnusJ, 2007-05-21T10:04Z

Jao, men då kan man ju bara använda den på ett ställe, gick inte att ha samma id på flera taggar. Jag är lite beroende av att använda värdet på flera ställen.

Permalänk: https://www.webforum.nu/p/1979557

## #9 — butiko, 2007-05-21T12:21Z

Då får du ha fler literals som du tilldelar samma värde.

Permalänk: https://www.webforum.nu/p/1979589

## #10 — MagnusJ, 2007-05-21T22:28Z

Vad jobbigt, det är så att jag håller på med en startsida och jag listar massa med länkar, sedan så väljer jag via en cookie om target ska vara \_blank eller \_self. Jag vet ju inte hur många länkar det är som ska visas så det blir svårt att ange literals. Har du nån idé på hur man kan lösa det?

Permalänk: https://www.webforum.nu/p/1979765

## #11 — butiko, 2007-05-22T21:51Z

Ska du lista saker ska du använda någon av de listkontroller som finns, exempelvis en repeater eller en gridview.

Permalänk: https://www.webforum.nu/p/1980101

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/160507-ajax-cookies
