2009-07-06 4 views
1

J'essaie de mettre un cookie pour stocker un département sélectionné. Le cookie est réglé avec une petite forme qui a un select-dropdown avec les ministères. Ceci est posté en utilisant AJAX.ASP.NET - Pourquoi mon cookie n'est-il pas conservé?

Voici comment je stocke le cookie:

<AcceptVerbs(HttpVerbs.Post)> _ 
Function ChangeDepartment(ByVal FormValues As FormCollection) As ActionResult 
    If Response.Cookies("department") IsNot Nothing Then 
     Response.Cookies("department").Value = FormValues("department") 
    Else 
     Dim c As New HttpCookie("department") 
     c.Value = FormValues("department") 
     c.Expires = Now.AddDays(7) 
     Response.Cookies.Add(c) 
    End If 

    Return Json(New With {.newDepartment = Response.Cookies("department").Value}) 
End Function 

La variable .newDepartment est retournée correctement avec la valeur correcte.

Voilà comment je récupère le cookie et bâtissez la sélection-menu déroulant:

<% Ajax.BeginRouteForm("ChangeDepartment", New AjaxOptions With {.LoadingElementId = "loading", .HttpMethod = "post", .OnSuccess = "function(request) {ajaxMessage('Department change', 'Department changed to: ' + request.get_response().get_object().newDepartment);}"})%> 
    <select name="department"> 
     <option>Default</option> 
     <option<%If Request.Cookies("department") Isnot Nothing andAlso Request.Cookies("department").Value = "Supervisor" Then Response.Write (" selected=""selected""") %>>Supervisor</option> 
     <option<%If Request.Cookies("department") Isnot Nothing andAlso Request.Cookies("department").Value = "Purchasing" Then Response.Write (" selected=""selected""") %>>Purchasing</option> 
     <option<%If Request.Cookies("department") Isnot Nothing andAlso Request.Cookies("department").Value = "Engineering" Then Response.Write (" selected=""selected""") %>>Engineering</option> 
    </select> 
    <input type="submit" value="Change department" /> 
<% Html.EndForm%> 

Le cookie n'est pas stocké, car la sélection-menu déroulant continue de retourner à Default. Est-ce que je fais quelque chose de mal?

Répondre

1

Vous pouvez essayer d'utiliser le débogueur HTTP comme Fiddler pour IE et HttpFox pour FireFox. Vérifiez si le cookie est vraiment envoyé avec la réponse du serveur et si le navigateur le renvoie avec d'autres demandes. De là, vous allez probablement suivre le problème et voir ce qui ne va pas. Si vous avez encore des problèmes, vous pouvez poster le trafic http ici.

+0

Ok ça m'a donné plus d'infos. Il s'avère que je nettoyais la valeur de cookie où je recevais la valeur. Mais d'une manière ou d'une autre, la valeur d'expiration est TOUJOURS en fin de session. Response.Cookies ("department"). Expires = Now.AddDays (7) ne semble pas passer? – Ropstah