Passaggio di una struttura in POST ad una pagina aspx , evento page_lo...

martedì 17 gennaio 2017 - 10.34
Tag Elenco Tags  C#  |  Javascript  |  HTML 5

hopera Profilo | Newbie

Ciao a tutti,
vorrei passare una lista di strutture via post ad una pagina aspx, per test ho scritto una pagina chiamante in html il cui codice è riportato qui sotto:

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>

<form id="mainform" action="Default.aspx" method="post">
<input type="submit" value="Submit">
</form>

<script type="text/javascript">

var frm = $('#mainform');

var myarray = [{ "Id": 1, "Type": "type1", "State": "state1" }, { "Id": 2, "Type": "type2", "State": "state2" }];

frm.submit(function (ev) {

$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: JSON.stringify(myarray),
contentType: 'application/json',
success: function (data) {
window.open('Default.aspx');
},
fail: function (data) {
alert("error");
}
});

ev.preventDefault();
});

</script>
</body>
</html>

mi aspetto (cosa che si verifica regolarmente) di ricevere la struttura nella load del code behind della pagina aspx, che riporto di seguito:

public partial class Default : System.Web.UI.Page
{
protected string _serJsonDetails = String.Empty;

protected void Page_Load(object sender, EventArgs e)
{
if (Request.HttpMethod == "POST")
{
if (Request.InputStream.Length > 0)
{
System.IO.Stream s = Request.InputStream;

Request.InputStream.Position = 0;
using (var inputStream = new StreamReader(Request.InputStream))
{
_serJsonDetails = inputStream.ReadToEnd();
}
}
}
}
}

Notare che utilizzo per il passaggio della lista alla parte javascript l'istruzione:

var lista = JSON.parse('<% = _serJsonDetails %>');

Il passaggio dei parametri in sè funziona correttamente, se non fosse che il metodo page_load viene chiamato 2 volte , la prima in POST correttamente viene popolata la lista, la seconda volta in GET, la _serJsonDetails si svuota e di conseguenza non posso utilizzarla.

La domanda è : come posso evitare che venga scatenato 2 volte il metodo page_load , mi piacerebbe che venga scatenato solo una volta quando passa la POST, oppure che venga mantenuto il valore della _serJsonDetails , ma se viene effettuato il doppio caricamento di fatto non credo questo sia possibile, ho provato anche a memorizzare in un campo hidden lato server ma mi viene sempre svuotata.

No so se dipende dalla pagina chiamante oppure no

Grazie mille per i graditi suggerimenti

GD
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5