Je veux append un champ caché par programme à une page asp.net, le lire et le modifier via javascript. Jusqu’à présent, mon code ne parvient pas à lire le champ caché ajouté.
Voici un exemple simple: Default.aspx:
function myFunction() { var testVar = document.getElementById("myHiddenField1").value; //works: field defined in aspx page var testVar2 = document.getElementById("myHiddenField2").value; //fails, Object required: field defined in codebehind alert(testVar); }
Default.aspx.cs (inclut ommited):
public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Page.RegisterHiddenField( "myHiddenField2", "bla!" ); doesnt work either Page.ClientScript.RegisterHiddenField( "myHiddenField2", "bla" ); } }
[modifier]
L’erreur que je reçois est la suivante: erreur d’exécution Microsoft JScript: object requirejs. Si j’ajoute une alerte (testVar2) et que j’ignore l’erreur, la boîte de message affiche “non défini”.
[/modifier]
[edit2]
[Suppression supprimée, car je me suis trompé]
[/ edit2]
Résumer ma question: comment créer un champ caché dans codebehind pour pouvoir le récupérer et le définir à partir de javascript?
Vous pouvez essayer quelque chose comme ça:
protected void Page_Load(object sender, EventArgs e) { HtmlInputHidden hidden2 = new HtmlInputHidden(); hidden2.ID = "Here you will put the id of the control"; hidden2.Value = "Here you will put your value"; this.Controls.Add(hidden2); }
En haut de votre fichier de code source, vous devez append cette déclaration:
using System.Web.UI.HtmlControls;
Le problème principal était que la ligne suivante était manquante dans la page aspx:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
Le codebehind n’a jamais été exécuté.