62 messaggi dal 22 ottobre 2012
Salve, un chiarimento.. ho una view "Index" che utilizza un model "T1ViewModel".
Nel Html.BeginForm ho inserito alcuni parametri, tra cui una stringa dove vorrei serializzare in JSON il modello e passare questo valore come parametro all'action del controller.

Se controllo il valore dei parametri :

"String fileprn", "T1ViewModel modelTest" sono aggiornati dopo la modifica mentre
il parametro"String parameterJson" nel quale volevo il valore serializzato non ha i valori aggiornati dopo il submit ma ha ancora i valori del GET da Index.


Come posso fare ?


@model AppTest.Web.ViewModels.T1ViewModel

@using (Html.BeginForm("Print", "Test", new { fileprn = "file.prn",
 parameterJson = JsonConvert.SerializeObject(Model)}))
{
    @Html.AntiForgeryToken()
  
    <div class="form-horizontal">  
        <div class="form-group">
                @Html.BootstrapTextBoxFor(model => model.codice)
                @Html.BootstrapTextBoxFor(model => model.descr)   
        </div> 
       <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Print" class="btn btn-default" />
            </div>
        </div>
    </div>


namespace AppTest.Web.Controllers
{
    public class TestController : Controller
    {
        // GET: 
        public ActionResult Index()
        {

            var vm = new T1ViewModel()
            {
                codice= "cod12345",
                descr= "descrizione12345"
            };
            
                
            return View(vm);
        }

        // Post: Test/Print
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Print(String fileprn, String parameterJson, T1ViewModel modelTest)
        {
            var value = new Hashtable();
            var value1 = new Hashtable();

}
78 messaggi dal 22 gennaio 2017
Contributi
Ciao rubinim, con il tuo codice a me il dato arriva nel controller.
L'esempio te l'ho caricato qui: http://aspitalia.atosato.it/WebApplication1.zip
Modificato da andrea.tosato86 il 12 luglio 2017 20.25 -
62 messaggi dal 22 ottobre 2012
Ciao, grazie per la risposta.
Ho provato quanto mi hai inviato ma non funziona... se controllo il valore del parametro "parameterJson" dopo averne modificato i valori dalla view ed eseguito il post il suo valore e sempre lo stesso letto dal metodo GET e non quello nuovo.

Ciao
78 messaggi dal 22 gennaio 2017
Contributi
Ciao rubinim, solo ora ho capito cosa effettivamente non riuscivi a far funzionare.
Il seguente codice viene eseguito solamente al caricamento della pagina e staticamente viene inserita la stringa.
JsonConvert.SerializeObject(Model)

Al submit del form, quindi, è normale avere l'oggetto impostato al load della pagina.
Il motore Razor, va ad eseguire l'operazione "lato server" e disegna la stringa all'interno dell'html. Di conseguenza il risultato è corretto.

Potresti spiegare meglio l'esigenza di avere il modello serializzato e anche inviato via form?
I parametri che ti aspetti nel controller (parameterJson e modelTest), nel tuo caso, dovrebbero risultare uguali. In particolare "parameterJson" dovrebbe essere la serializzazione di "modelTest".
Come mai? Non è sufficiente inviare "modelTest"?
public ActionResult Print(String fileprn, String parameterJson, T1ViewModel modelTest)

Modificato da andrea.tosato86 il 14 luglio 2017 09.12 -
62 messaggi dal 22 ottobre 2012
Grazie per la risposta.

Avevo inserito il modelTest solo per prova.
Pensavo di utilizzare un parametro string in formato JSON per riutilizzare la funzione e non essere costretto ad avere sempre un modello per passare i valori.

Comunque tutto chiaro, grazie per la risposta.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.