2010-10-04 5 views
5

Je rencontre des difficultés pour définir une variable à partir du code et l'utiliser dans la page ASP.NET (en la définissant comme valeur dans une zone de texte). Ma page web contient simplement des erreurs et dit qu'il n'existe pas dans le contexte actuel. La variable est déclarée et définie dans la méthode Page_Load.Utilisation de la variable du code derrière ASP.NET

Voici le code ASP.NET approprié. Je suppose que vous n'aurez pas besoin de voir le code derrière, car j'ai testé la sortie de la variable via le codebehind (en utilisant Response.Write) et cela fonctionne très bien.

<asp:TemplateField HeaderText="Initial Path" 
       SortExpression="Initial_Path"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox6" runat="server" 
         Text='<%# initialPath %>'></asp:TextBox> 
       </EditItemTemplate> 
       <InsertItemTemplate> 
        <asp:TextBox ID="TextBox8" runat="server" 
         Text='<%# initialPath %>'></asp:TextBox> 
       </InsertItemTemplate> 
       <ItemTemplate> 
        <asp:Label ID="Label8" runat="server" Text='<%# initialPath %>'></asp:Label> 
       </ItemTemplate> 
      </asp:TemplateField> 

Merci :)

EDIT: Ok vous, voici les parties pertinentes du code derrière

 string schedID = sched.SchedulerInstanceId; 
     JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1"); 
     JobDataMap dataMap2 = jobDetail2.JobDataMap; 
     initialPath = dataMap2.GetString("initialPath"); 
     Response.Write(initialPath); 

Le response.write est pour le débogage - il affiche correctement la variable si la variable est actuellement réglé

EDIT 2: Voici le code derrière

public partial class EditJobDetails : System.Web.UI.Page 
    { 
    public string initialPath { get; set; } 

    protected void Page_Load(object sender, EventArgs e) 
    { 

     //Scheduler stuff for Quartz.NET, removed because of length 

     string schedID = sched.SchedulerInstanceId; 
     JobDetail jobDetail2 = sched.GetJobDetail(Request.QueryString["JOB_NAME"], "sched1"); 
     JobDataMap dataMap2 = jobDetail2.JobDataMap; 
     initialPath = dataMap2.GetString("initialPath"); 
    } 

Ce qui ne fonctionne pas est simplement le <% = initialpath%> dans le formulaire ASP. Il ne montre simplement rien, comme la variable n'est affectée à rien

+1

Votre code-behind est au moins * important * pour ce problème. Pouvez-vous nous montrer cela aussi? –

+0

Je pense que nous avons besoin de plus d'informations que Kirk a dit. L'édition ne nous dit toujours pas si "initialPath" est public, ou s'il est accédé via une propriété ... –

+0

Désolé, j'ai maintenant rendu la variable publique comme CrazyDart présentée ci-dessous, donc la déclaration de la variable est comme ceci: – Chris

Répondre

3

Ce que je ne vois pas où est ici l'appel à DataBind() est fait. Si c'est fait avant, alors <%#initialPath%> écrira sa valeur de départ (null, qui s'écrit comme une chaîne vide dans un tel cas). Si ce n'est pas fait, alors <%#initialPath%> n'écrira jamais rien. Vous devez vous assurer que DataBind() est appelée à un moment approprié, comme à la fin de Page_Load

+0

Ah, je mettre DataBind à la fin et il fonctionne maintenant bien. Merci, et merci aussi à tous ceux qui ont aidé :) – Chris

2

<%# initialPath %> est une expression de liaison de données signifiant qu'ASP.NET recherchera une propriété initialPath sur la collection à laquelle vous liez. De toute évidence, cette propriété n'existe pas car il s'agit d'une variable locale.

12

Dans le codebehind, vous devez le créer en tant que propriété publique. Ensuite, vous pouvez l'utiliser tout ce que vous voulez dans la page ASPX.

dans le code derrière:

public string yourvar { get; set; } 

dans ASPX:

<EditItemTemplate> 
     <asp:TextBox ID="TextBox6" runat="server" 
      Text='<%= yourvar %>'></asp:TextBox> 
    </EditItemTemplate> 
+0

Acclamé ami, mais pour une raison quelconque, le champ qu'il est censé être dans le formulaire ASP.NET est vide – Chris

+0

Oui, les expressions de liaison ne fonctionnent qu'avec les propriétés – DancesWithBamboo

+0

Dans votre Page_Load vous devez définir le contenu de votre var, pouvez-vous poster exemple de code de ce qui ne fonctionne pas? S'il vous plaît inclure la propriété, la pageload et l'aspx. – CrazyDart

Questions connexes