2010-10-04 10 views
5

Tengo un poco de dificultad para establecer una variable desde el código subyacente y utilizarla en la página ASP.NET (configurándola como el valor dentro de un cuadro de texto). Mi página web simplemente comete errores y dice que no existe en el contexto actual. La variable se declara y establece todo en el método Page_Load.Usando la variable del código detrás en ASP.NET

Aquí está el código ASP.NET relevante. Supongo que no necesitará ver el código, ya que he probado la salida de la variable a través del código subyacente (utilizando Response.Write) y eso funciona 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> 

Gracias :)

EDIT: Ok supuesto, aquí tienes las partes pertinentes del Código detrás

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

El response.write es para la depuración - da salida a la variable correctamente para la variable en realidad está fijado

EDIT 2: Aquí está el código detrás

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

Lo que no funciona es solo <% = initialpath%> en el formulario ASP. Simplemente no muestra nada, como la variable no tiene asignada nada

+1

Su código subyacente es al menos * tan importante para este problema. ¿Puedes mostrarnos eso también? –

+0

Creo que necesitamos más información como dijo Kirk. La edición todavía no nos dice si "initialPath" es público, o si se accede a través de una propiedad ... –

+0

Lo siento, ahora he hecho pública la variable como CrazyDart demostrado a continuación, por lo que la declaración variable es así: – Chris

Respuesta

3

Lo que no vemos aquí es donde se hace la llamada a DataBind(). Si está configurado antes, entonces <%#initialPath%> escribirá su valor inicial (nulo, que se escribe como una cadena vacía en tal caso). Si no está hecho, entonces <%#initialPath%> nunca escribirá nada. Debe asegurarse de llamar al DataBind() en el momento apropiado, como al final de Page_Load

+0

Ah, yo poner DataBind al final y ahora funciona bien. Gracias, y gracias también a todos los que ayudaron :) – Chris

2

<%# initialPath %> es una expresión de enlace de datos, lo que significa que ASP.NET buscará una propiedad initialPath en la colección a la que se está vinculando. Obviamente, dicha propiedad no existe ya que esta es una variable local.

12

En el código subyacente debe crearlo como una propiedad pública. Entonces puedes usarlo todo lo que quieras en la página aspx.

en código detrás:

public string yourvar { get; set; } 

en aspx:

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

Saludos amigo, pero por alguna razón el campo que se supone que está en el formulario ASP.NET está en blanco – Chris

+0

Sí, las expresiones vinculantes solo funcionan con las propiedades – DancesWithBamboo

+0

En su Page_Load, necesita configurar el contenido de su var, ¿puede publicar código de ejemplo de lo que no funciona? Por favor, incluye la propiedad, la carga de la página y el aspx. – CrazyDart

Cuestiones relacionadas