2012-03-22 87 views
6

Possible Duplicate:
Why <%= %> works in one situation but not in anotherASP.NET - Paso de una variable de C# a HTML

Estoy tratando de pasar variables declaradas en C# para html. Todas las variables han sido declaradas como públicas en el código subyacente.

Este es el código HTML que estoy utilizando:

<asp:TextBox ID="TextBoxChildID" Text='<%= Child_ID %>' runat="server" Enabled="false"></asp:TextBox> 

El problema es que cuando se carga la página, el texto '<% = Child_ID%>' aparece en el cuadro de texto en lugar del valor de la variable .

¿Qué pasa, por favor?

+0

** http: //msdn.microsoft.com/en-us/library/6dwsdcf5%28VS.71%29.aspx** –

Respuesta

7

Todo esto es asumiendo que esto es solo un cuadro de texto en algún lugar de su página, en lugar de en un control DataBound. Si el cuadro de texto es parte de un itemTemplate en un repetidor, y Child_ID es algo que difiere en la fila de datos, entonces todo esto es incorrecto.

hacer esto en su lugar:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"><%= Child_ID %></asp:TextBox> 

En resumen, usted está cometiendo el mismo error que estaba haciendo cuando hice esta pregunta: Why <%= %> works in one situation but not in another


alternativa, en código subyacente, que puede tener esto en su ASPX:

<asp:TextBox ID="TextBoxChildID" runat="server" Enabled="false"></asp:TextBox> 

y esto a su código subyacente:

TextBoxChildID.Text = Child_ID; 
+0

He intentado con su sugerencia. Sin embargo, ahora parece que no aparece nada en los cuadros de texto: s – Matthew

+0

Lo siento, me equivoqué. <%# %> tampoco funcionará en este contexto. Debería ser ahora mismo. si es así, ve a votar la respuesta a mi pregunta: ese tipo hizo un gran trabajo al explicarlo y se merece los puntos. Y mire también las notas de esa respuesta: hay un enlace a un grupo de expresiones similares que son útiles. – David

+0

Me está dando el error: los bloques de código no son compatibles en este contexto – Matthew

1

La variable debe ser pública en primer lugar. Y:

'<%# Child_ID %>' 
+0

Estoy bastante seguro de que solo tiene que estar protegido. –

+0

Como una buena práctica sería pasar el valor correcto y no una variable a HTML.Como hay una variable protegida de herencia directa también funciona. –

1
<script type="text/javascript"> 
    function abc() 
    { 
     var id = document.getElementById('txtTextBox'); 
     id.value=<%=MyProperty %>; 
     alert(id.value); 
    } 
</script> 

protected int MyProperty 
{ 
    get 
    { 
     return 1; 
    } 
} 

Page.RegisterStartupScript(Guid.NewGuid().ToString(), 
"<script language = 'javascript'>abc();</script>"); 
0

En el código HTML:

<asp:HiddenField ID="HiddenField1" runat="server" /> 

En La Codebehind:

protected void Page_Load(object sender, EventArgs e) 
{ 
    HiddenField1.Value = Child_ID; 
} 

Sería la mejor manera, crea una entrada oculta con el valor.

Cuestiones relacionadas