How should data be passed between client-side Javascript and C# code behind an ASP.NET app?
- by ctck
I'm looking for the most efficient / standard way of passing data between client-side Javascript code and C# code behind an ASP.NET application. I've been using the following methods to achieve this but they all feel a bit of a fudge.
To pass data from Javascript to the C# code is by setting hidden ASP variables and triggering a postback:
<asp:HiddenField ID="RandomList" runat="server" />
function SetDataField(data) {
document.getElementById('<%=RandomList.ClientID%>').value = data;
}
Then in the C# code I collect the list:
protected void GetData(object sender, EventArgs e)
{
var _list = RandomList.value;
}
Going back the other way I often use either ScriptManager to register a function and pass it data during Page_Load:
ScriptManager.RegisterStartupScript(this.GetType(), "Set","get("Test();",true);
or I add attributes to controls before a post back or during the initialization or pre-rendering stages:
Btn.Attributes.Add("onclick", "DisplayMessage("Hello");");
These methods have served me well and do the job, but they just dont feel complete. Is there a more standard way of passing data between client side Javascript and C# backend code?
Ive seen some posts like this one that describe HtmlElement class; is this something I should look into?