none
Passare contenuto proprietà model mvc3 a variabile javascript RRS feed

  • Domanda

  • Come faccio a passare il contenuto di una proprietà del model (che sarebbe il contenuto di una textarea definita in questo modo @html.textareafor(m=>m.script) quindi la proprietà si chiama script) di un progetto mvc3 ad una variabile javascript?

     

    Un'altro problema, quando passo il contenuto della variabile javascript nel controller in questo modo:

     

     

    public ActionResult Passed(string script)
            {
                Session["Script"] = script;
                return View();
            }

     


    io vorrei che il contenuto di script(il parametro) debba essere assegnato alla textarea , per far questo ho introdotto la session ma non mi restituisce il contenuto di script ma il contenuto che già era presente quindi non funzionando.

    praticamente la session non contiene nessun valore quando vado ad assegnarla ad un'altra proprietà presente in un'altro controller

    se io elimino la session come posso assegnare la variabile script direttamente alla textarea?

    Come posso risolvere questi problemi? 




    • Modificato mvc33 giovedì 29 settembre 2011 17:33
    giovedì 29 settembre 2011 17:11

Tutte le risposte

  • Per creare una variabile JavaScript con un valore in binding con il Model fai così:
    var script = "@Model.Script";
    

    Per passare una variabile JavaScript al controller puoi fare così:
    <script type="text/javascript">
        $("#script").value = "YOUR_Value";
    </script>
    <input type="hidden" name="script" /><br/><input type="submit" name="Send" />
    

    Matteo Migliore

    Bloghttp://blogs.ugidotnet.org/matteomigliore
    Twitterhttp://twitter.com/matteomigliore
    CodePlex
    venerdì 30 settembre 2011 00:03
  • con l'istruzione var script="@Model.script"; non mi riporta al controller;
    questo è il mio codice javascript:
    <script type="text/javascript">
               $('#script').change(function () {
                   $('#TableCell1').html('');
                   var selection = "@Model.script";
                   $.post("/Home/Avatar", { script: selection },
                 function (txt) {
                    alert(txt)
                })
               });
        </script>
    come mai non mi riporta al controller chiamato avatar se inserisco l'istruzione @Model.script?

    questi dati comunque non devo passarli quando premo un pulsante bensì alla variazione del contenuto di una textarea
    • Modificato mvc33 venerdì 30 settembre 2011 14:46
    venerdì 30 settembre 2011 14:21
  • Cosa non funziona esattamente?

    Il codice che ti ho indicato serve ad impostare il valore di una variabile JavaScript con una proprietà del Model.

    Verifica che il codice HTML renderizzato sia corretto.

    Devi anche fare il viceversa? Dalla view passare un valore al controller prodotto via JavaScript?


    Matteo Migliore

    Bloghttp://blogs.ugidotnet.org/matteomigliore
    Twitterhttp://twitter.com/matteomigliore
    CodePlex
    domenica 2 ottobre 2011 22:01
  • praticamente l'istruzione : 

    $.post("/Home/Avatar", { script: selection } (selection contiene "@Model.script" assegnata in questo modo:  var selection = "@Model.script";)

    non mi riporta al controller chiamato avatar  dove poi deve eseguire determinate istruzioni ovvero salvare il contenuto della textarea dentro la session che poi dovrò passare ad un'altro controller per verificare se i valori della textarea sono cambiati 



    • Modificato mvc33 lunedì 3 ottobre 2011 11:00
    lunedì 3 ottobre 2011 10:57
  • Qual'è il codice HTML che viene renderizzato?

    Avvia l'applicazione, vai nella pagina in question, dal browser "View source", controlla il codice HTML.

    E' corretto?

    Dal controller passi il model correttamente alla view?

    Il codice dovrebbe essere simile a questo:
    [HttpGet]
    public ActionResult Index()
    {
        Render("Home", new ScriptViewModel { Script = "Value" });
    }
    
    protected ActionResult Render(string viewName, object model = null)
    {
        if (Request.IsAjaxRequest())
        {
            return
                model == null ?
                    PartialView(viewName) : PartialView(viewName, model);
        }
    
        return
            model == null ?
                View(viewName) : View(viewName, model);
    }
    

    Matteo Migliore

    Bloghttp://blogs.ugidotnet.org/matteomigliore
    Twitterhttp://twitter.com/matteomigliore
    CodePlex
    lunedì 3 ottobre 2011 11:10
  • credo che il codice che mi hai postato non dovrebbe fare al mio caso,

    spiego meglio il funzionamento della mia applicazione 

    allora ho una textarea dove al caricamento della pagina viene caricato al suo interno il contenuto di un file di testo.

    quindi nel momento in cui vado a modificare il contenuto della textarea (che quindi contiene il file di testo che ho incluso)e vado in un'altro pagina del sito, devo far in modo che ciò che ho modificato nella textarea devo salvarlo da qualche parte ( ad es session ecc) in modo che quando ritorno nella pagina in cui è presente la textarea devo vedere ciò che ho modificato in precedenza.

    tengo a precisare che non ci sono viste parziali

    Spero di essere stato chiaro ora non sò se quello che stavo facendo era corretto oppure se cè qualche altro modo per implementare questa situazione.

     


    • Modificato mvc33 lunedì 3 ottobre 2011 11:58
    lunedì 3 ottobre 2011 11:57