Stai fraintendendo il funzionamento del ViewBag.
Quando si lavora in MVC, e si apre una pagina web, questo è ciò che (più o meno) accade:
- Il Metodo 'indice' di FooController è gestito. Alla fine, viene restituita una vista.
- L'applicazione MVC troverà quindi la vista e inizierà a eseguirne il rendering in base al codice HTML trovato nel file .aspx correlato. Se il programma incontra elementi come "@ ViewBag.Id", eseguirà fondamentalmente una sostituzione di stringa con qualunque sia il valore ".Id". (È un po 'più complicato di così, ma per ragioni di discussione, fondamentalmente si sostituisce una stringa).
- Dopo il rendering, il documento HTML viene inviato al browser, che viene quindi visualizzato.
Nel momento in cui il browser riceve la pagina, ViewBag è praticamente diventato "fuori campo". Ciò è dovuto al fatto che l'applicazione ASP (MVC) utilizza il ViewBag, ma JavaScript ha un ambito nel documento del browser Web (questo è il codice HTML restituito al browser entro il dell'applicazione, dopo ViewBag è andato JavaScript non fa parte dell'applicazione MVC, solo la pagina Web risultante
Quindi la risposta breve è, no non è possibile farlo in quel modo. Prova a pensare a come fare una stringa inline sostituire È possibile solo inserire il valore ViewBag nella pagina HTML, non viceversa
Supponiamo che l'ID sia 5, il seguente codice nel file aspx:
$(".btn").on("click",function(){
@ViewBag.Id = $(this).attr("id")
});
sarà inviata al browser come
$(".btn").on("click",function(){
5 = $(this).attr("id")
});
Dal momento che il browser vede solo questa ultima parte, semplicemente non ha senso in Javascript. Nel tuo caso, con l'errore di sintassi, significa semplicemente che la variabile non è stata inizializzata e stai tentando di accedere a null
.
Mi dispiace, noto che ho dimenticato di digitare il mio errore –
Presumibilmente '@ ViewBag.Id' non è definito da qualche parte, quindi non viene prodotto nulla (invece di un errore), quindi il lato sinistro dell'assegnazione è nulla . Controlla il tuo codice per vedere dove viene dichiarato '@ ViewBag.Id'. – Bojangles