Montag, Mai 25, 2020

Wie man klar session mit jquery?

Ich bin der Entwicklung von mvc-Anwendung. Ich benutzte session in view und controller.
Erste wenn ich die Option Wert aus dropdown-Liste. ausgewählten Wert gesteuert wird, view und controller.
aber wenn ich wieder wählen, Wert aus dropdown-Liste), dass die Zeit auf change-Ereignis möchte ich klar-Sitzung.

unten ist mein code für die Ansicht

@model IEnumerable<StockWatch.DTO.ProductDTO>

@using GridMvc.Html
@using System.Web.UI.WebControls;

@{
    ViewBag.Title = "Index";
    int VendorId = Convert.ToInt32(Session["vendorId"]);
}

<!DOCTYPE html>

<html>
    <head>
         <link href="@Url.Content("~/Content/Custom1.css")" rel="stylesheet" type="text/css" />    
   </head>
<body> 

     @if (Model == null)
     {

    <div id="vendorDropdownDiv" class =" row-fluid Span9" style ="margin-bottom :15px">

                   <div class="span6"  >
                           <div class="span4" style="margin-left:35px;" >
                         <label >Vendor</label>
                    </div>
                    <div class="span6" >
                      @Html.DropDownList("VendorId", ViewData["list"] as SelectList, "-- Select vendor --", new { @id = "vendorDropdown", @name = "VendorId" })

                  </div>
                 </div>                              

                 <div class="span11" style="text-align:right">           
                <input class="btn btn-primary" type="submit" value="Create" id="create"/>
                 <input class="btn btn-default" value="Cancel" style="width:45px;" onclick="window.location.href='@Url.Action("index")    '"/>
           </div>
              </div> 
     }    

  <div id="indexview"></div>

     @if (Model != null)
     {
    <div id="modeldiv" class="span12" style="margin-left:0px;margin-right:0px;">
       <div class="row-fluid" style="margin-top:30px;margin-bottom:10px;">
       <div class="listheading span9" style="font-size:22px;">Products</div>

      <div class="createlink span3" style="text-align:right;margin-left:10px;">
       @Html.ActionLink("+ Add Product", "Create")
    </div>
  }     
</body>
</html>

<script>
    $(document).ready(function () {      
        $('#vendorDropdown').change(function () {                  
        }); 
    });
</script>

– und controller-code, wie unten

       public ActionResult Index(int VendorId=0)
    {
        if (VendorId == 0)
        {
            VendorId = Convert.ToInt32(Session["vendorId"]);
        }

        VendorService vendorService = new VendorService();
        SelectList SelectList = new SelectList(vendorService.GetAll().OrderBy(t => t.Name), "Id", "Name", VendorId);
        ViewData["list"] = SelectList;

        var Categorylist = new SelectList(new[] { "Dull", "Anodised", "All" });

        ViewData["Categorylist"] = Categorylist;

        if (VendorId != 0 )
        {
            Session["vendorId"] = VendorId;
            ProductService productService = new ProductService();
            var productlist = new List<ProductDTO>();             
            productlist = productService.GetAll().Where(x => x.VendorId == VendorId).ToList();

            return View(productlist );
        }
        else
        {
            return View();
        }
    }

hier, wie klar Convert.ToInt32(Session["vendorId"]); dieser Sitzung mithilfe von jquery.
thank u im Voraus

  • Erstellen Sie eine Aktion ClearSession und rufen Sie es mit $.ajax oder $.get.
  • Sitzungen verwaltet server und konnte nicht entfernt werden auf den client, ohne E-Anfrage an den server. Sie können einen ajax-Aufruf und es tun.
  • Sie können versuchen, diese: stackoverflow.com/questions/19470517/…
InformationsquelleAutor sanjivani | 2014-07-02

6 Kommentare

  1. 3

    Sitzungen verwaltet server und konnte nicht entfernt werden auf den client, ohne E-Anfrage an den server.

    Vorgeschlagen von Patrick Hofman, die Sie können eine Aktion Erstellen, ClearSession und rufen Sie mit $.ajax oder $.bekommen.

    • Hast du wirklich kopieren und einfügen @Ondipuli Kommentar als Antwort?
    • Man kann deutlich sehen, dass ich antwortete, 54 Minuten her, und der Kommentar wurde Hinzugefügt, 52 Minuten Her
    • Und das ist, was passiert, wenn man voreilige Schlüsse zu ziehen, ohne Aufmerksamkeit. Ich entschuldige mich.
  2. 1

    Als die session wird serverseitig gespeichert – nicht auf der client-Seite müssen Sie anweisen, den server zu zerstören. maing eine Anfrage zu einer action-Methode
    dies tun könnte –

    Erstellen Sie eine action-Methode in mvc site –

    public class ControllerName
    {
     public ActionResult DestroySession()
     {
         Session = null;
     }
    }

    dann von der Seite aus, rufen Sie den folgenden javascript-code:

    <script>
    
    $('#clearSessionButton').click(
    function() {
        $.ajax('/ControllerName/DestroySession');
    });
    
    </script>
    • möglicherweise haben einige syntax-Fehler!
  3. 0

    call $ajax oder $post-Methode zum löschen einer Sitzung

         $.post("clearsessionAction",function(data){
            //clear your session 
         });
  4. 0

    Erstellen Sie eine Aktion in Ihrem controller, der clear und abandon die Sitzung. Sie können anrufen, die Aktion mit jQuery, ajax, und die Sitzung wird gelöscht bekommen.

  5. 0

    Ich weiß, es ist vielleicht spät, aber ich hoffe, dies wird Ihnen helfen,
    Zuerst von allen, müssen Sie vorsichtig sein beim arbeiten mit der session.
    Besseren Weg, es zu schaffen, Klasse, die werden alles tun, die Arbeit mit Ihrer session
    Nach dem, was Sie erstellen müssen, der controller, die Ihnen helfen, alles tun u wollen von js. Haben Sie so etwas wie dieses:

    public class SessionManager
    {
        public static int VendorId
        {
            get { return Convert.ToInt32(HttpContext.Current.Session["vendorId"]); }
        }
    
        public static void SetVendorId(int id)
        {
            HttpContext.Current.Session["vendorId"] = id; 
        }
    
        public static void ClearVendorId()
        {
            HttpContext.Current.Session["vendorId"] = null;
        }
    }
    
    public class SessionManagerController : Controller
    {
        [HttpPost]
        public ActionResult GetVendorId()
        {
            return Json(SessionManager.VendorId);
        }
    
        [HttpPost]
        public ActionResult SetVendorId(int id)
        {
            try
            {
                SessionManager.SetVendorId(id);
            }
            catch (Exception)
            {
                return Json("false");
            }
            return Json("true");
        }
    
        [HttpPost]
        public void ClearVendorId()
        {
            SessionManager.ClearVendorId();
        }
    }

    dem Weg zum Aufruf dieser Methoden vom client können Sie sich selbst aussuchen.

    und durch die Art und Weise, in der Sie Ihre Ansicht:

     int VendorId = Convert.ToInt32(Session["vendorId"]);

    verwenden Sie:

    int VendorId = SessionManager.VendorId
  6. -1

    Können Sie JQUERY mit ajax wie folgt:

    1 – in der HTML-Datei mit einem id-tag, zum Beispiel id=“clear_session“ .

    2 – use „clear_session“ click-Ereignis zum starten von ajax in Ihre js-Datei :

    var clear_session    = $("#clear_session"); 
    clear_session.click(function(){
            $.ajax({
                    type: "POST",
                    url: "index.php",
                    data: "do=clear_session",
                    complete: function(data){ 
    
                            //your desired finishing function
    
                    }           
            });     
    });

    3 – verwenden Sie diesen code in index.php Datei :

    if ($_POST['do'] == 'clear_session')
    {
        //your desired function
    }

    Antworten Sie bitte für weitere Anleitung.
    Saeed Rostami.
    IT-Ingenieur I. R. ich
    +98 935 516 90 58

Kostenlose Online-Tests