Estou procurando a maneira mais eficiente / padrão de transmitir dados entre o código JavaScript do lado do cliente e o código C # atrás de um aplicativo ASP.NET. Eu tenho usado os seguintes métodos para conseguir isso, mas todos eles se sentem um pouco enganados.
Para passar dados do JavaScript para o código C # é definindo variáveis ASP ocultas e acionando uma postagem:
<asp:HiddenField ID="RandomList" runat="server" />
function SetDataField(data) {
document.getElementById('<%=RandomList.ClientID%>').value = data;
}
Então, no código C #, coleciono a lista:
protected void GetData(object sender, EventArgs e)
{
var _list = RandomList.value;
}
Voltando à outra maneira, costumo usar o ScriptManager para registrar uma função e transmitir dados durante o Page_Load:
ScriptManager.RegisterStartupScript(this.GetType(), "Set","get("Test();",true);
ou adiciono atributos aos controles antes de uma postagem de retorno ou durante os estágios de inicialização ou pré-renderização:
Btn.Attributes.Add("onclick", "DisplayMessage("Hello");");
Esses métodos me serviram bem e fazem o trabalho, mas simplesmente não parecem completos. Existe uma maneira mais padrão de transmitir dados entre o JavaScript do lado do cliente e o código de back-end em C #?
Eu já vi alguns posts como este que descrevem a classe HtmlElement; isso é algo que eu deveria procurar?