2015-07-10 7 views
6

Inizializzo una proprietà all'interno del Constructor del controller.Il valore della proprietà C# non viene modificato in Javascript/jquery

public BookController() 
{ 
    SessionProvider.SessionLoadSceanrio = false; 
} 

Ho un metodo di azione che reimposta nuovamente la proprietà su un evento clic del pulsante.

public ActionResult LoadScenario(int bookId) 
{ 
    SessionProvider.SessionLoadSceanrio = true; 
    // remaining code 
    return Json(ScenarioId, JsonRequestBehavior.AllowGet); 
} 

Il seguente codice javascript è a mio avviso che viene chiamato quando si fa clic sul pulsante.

var BookHandler = { 
    $("#btnLoadScen").click(function (e) { 
       $.ajax({ 
        url: "@Url.Action("LoadScenario", "Book")", 
         dataType: 'json', 
         type: 'POST', 
         data: { 
          'bookId': BookHandler.getBookId() 
         }, 
         success: function (response) { 
          var scenarioId = response; 
          var isLoadScenario = "@Portal.Presentation.Web.Planning.MVC.App_Start.SessionProvider.SessionLoadSceanrio"; 
          //otherproperties 
          window.open("@Url.Action("Index", "BookScenario", new {loadScenario = "_loadScenario"}).replace('_loadScenario', isLoadScenario), tabId); 

         }, 
         error: function() { 
         } 
        }); 

       }); 
} 

Il mio problema è quando faccio clic sul pulsante, il valore delle modifiche alle proprietà nel controller. Ma non cambia nel mio codice javascript.Si prega di vedere la cattura dello schermo dello strumento di sviluppo.

ScreenCapture

Qualcuno ha un indizio su questo?

+0

Vedo che c'è un errore nella console. Cosa dice? – Tushar

+0

Il codice che hai incollato è diverso dallo screenshot. Sei sicuro di fare riferimento allo stesso codice durante l'esecuzione? –

+0

sohar .. è errore css .. possiamo ignorarlo .. –

risposta

4

Si sta utilizzando la sintassi rasoio. quindi inizialmente caricato pagina, i valori sono impostati e questi valori sono stringa, non più una variabile. quindi non è possibile aggiornare nuovamente il valore di sessione.

si prega di ottenere il valore di sessione da una chiamata AJAX e impostare la variabile.

3

Il codice seguente verrà valutato solo dopo aver ottenuto la vista dal server e non verrà rivalutato dopo la chiamata ajax.

var isLoadScenario = "@Portal.Presentation.Web.Planning.MVC.App_Start.SessionProvider.SessionLoadSceanrio"; 

Per fare ciò che si intendeva, è necessario restituire SessionLoadSceanrio nella risposta.

Si può fare come:

public ActionResult LoadScenario(int bookId) 
    { 
     SessionProvider.SessionLoadSceanrio = true; 
     // remaining code 
     return Json(new {ScenarioId, SessionLoadSceanrio = SessionProvider.SessionLoadSceanrio}, JsonRequestBehavior.AllowGet); 
    } 
Problemi correlati