2010-10-04 14 views
5

Sto riscontrando un po 'di difficoltà nell'impostare una variabile dal codice sottostante e utilizzarla nella pagina ASP.NET (impostandola come valore all'interno di una casella di testo). La mia pagina web semplicemente errori e dice che non esiste nel contesto attuale. La variabile è dichiarata e impostata tutto nel metodo Page_Load.Utilizzo della variabile dal codice sottostante in ASP.NET

Ecco il codice ASP.NET pertinente. Presumo che non avrai bisogno di vedere il codice, dato che ho testato l'output della variabile tramite codebehind (usando Response.Write) e che funziona bene.

<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> 

Grazie :)

EDIT: Ok sicuro, ecco la parti rilevanti del codice dietro

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

Il response.write è per il debug - emette la variabile correttamente in modo variabile è attualmente impostato

EDIT 2: Ecco il codice

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"); 
    } 

Ciò che non funziona è solo lo <% = percorso iniziale%> nel modulo ASP. Semplicemente non mostra nulla, come la variabile non viene assegnata nulla

+1

Il tuo code-behind è * * minimo * importante per questo problema. Puoi mostrarci anche questo? –

+0

Penso che abbiamo bisogno di ulteriori informazioni, come ha detto Kirk. La Modifica continua a non dirci se "initialPath" è pubblico, o se è accessibile tramite una proprietà ... –

+0

Spiacente, ora ho reso pubblica la variabile come CrazyDart dimostrata di seguito, quindi la variabile dichiartion è simile a questa: – Chris

risposta

3

Quello che non vedo qui è dove viene effettuata la chiamata a DataBind(). Se è fatto prima è impostato quindi <%#initialPath%> scriverà il suo valore iniziale (null, che viene scritto come una stringa vuota in tal caso). Se non viene creato, lo <%#initialPath%> non scrive mai nulla. Devi assicurarti che il numero DataBind() venga chiamato al momento opportuno, ad esempio alla fine di Page_Load

+0

Ah, I metti DataBind alla fine e ora funziona bene. Grazie, e grazie anche a tutti coloro che hanno aiutato :) – Chris

2

<%# initialPath %> è un'espressione di associazione che significa che ASP.NET cercherà una proprietà initialPath nella raccolta a cui si sta vincolando. Ovviamente tale proprietà non esiste in quanto si tratta di una variabile locale.

12

Nel codebehind è necessario crearlo come proprietà pubblica. Quindi puoi usarlo tutto ciò che vuoi nella pagina di aspx.

in codice dietro:

public string yourvar { get; set; } 

in aspx:

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

Cheers buddy, ma per qualche motivo il campo che dovrebbe essere nel modulo ASP.NET è vuoto – Chris

+0

Sì, le espressioni vincolanti funzionano solo con le proprietà – DancesWithBamboo

+0

Nel tuo Page_Load hai bisogno di impostare il contenuto della tua var, puoi pubblicare codice di esempio di cosa non funziona? Si prega di includere la proprietà, il pageload e l'aspx. – CrazyDart

Problemi correlati