2011-09-13 32 views
31

Sé que he visto esto pero no puedo recordar la forma correcta de hacerlo ... básicamente tengo una variable de cadena llamada "clientes de cadena" en mi archivo .cs .. pero yo no iba a ser capaz de pasar a mi página aspx algo así comocómo llamar a una variable en el código detrás de la página aspx

<%=clients%> 

por favor, corríjanme, no recuerdo o no está seguro de cómo hacer esto. (nuevo en C#) y cuando lo busqué en Google ... no estaba claro ... o no muchos de estos por ahí ... buscado como

"asp.net C# <%= %> resultados no consistentes ... tal vez porque no sé . cómo llamar a estos ..

+0

posible duplicado de [obtener la propiedad del código detrás en la página aspx] (http://stackoverflow.com/questions/1924309/get-property-from-code-behind-into-aspx -page) – onof

Respuesta

53

el campo debe ser declarada public para una visibilidad adecuada del marcado ASPX En cualquier caso, se puede declarar una propiedad:


private string clients; 
public string Clients { get { return clients; } } 

ACTUALIZACIÓN: también puede ser declarada como protected, como se indica en los comentarios a continuación.

Entonces, llamarlo en el lado ASPX:

<% =% Clientes>

Tenga en cuenta que esto no funcionará si se coloca en un atributo de código del servidor. Por ejemplo:

< asp: Label runat = "server" Text = "<% =% Clientes>" />

Esto no es válida. Esto es:

< div> <% = Clientes%> </div>

+0

y cómo lo llamo en la página .aspx? – user710502

+1

Su código '<% = clients%>' era correcto. –

+0

Agregué algunos ejemplos y algunas explicaciones. –

7

Para

<%=clients%> 

de trabajo que tiene que tener un público o protegido variables clients en el código detrás.

Aquí está un artículo que lo explica: http://msdn.microsoft.com/en-us/library/6c3yckfw.aspx

+1

Por favor, no publique enlaces antiguos. –

+1

protected funciona igual de bien ya que el marcado aspx hereda el código subyacente. – gislikonrad

+0

Gracias. Todos los descendientes pueden acceder, a la derecha. –

4

Es necesario declarar sus clientes variables como públicas, por ejemplo,

public string clients; 

pero probablemente debas hacerlo como una propiedad, p.

private string clients; 
public string Clients{ get{ return clients; } set {clients = value;} } 

Y entonces se le puede llamar en su página .aspx como esto:

<%=Clients%> 

variables en C# son privados por defecto. Lea más sobre access modifiers in C# on MSDN y properties in C# on MSDN

4

Primero debe asegurarse de que el nivel de acceso de la variable esté protegido o sea público.Si la variable o propiedad es privada, la página no tendrá acceso a ella.

Código Detrás

protected String Clients { get; set; } 

Aspx

<span><%=Clients %> </span> 
5

Asegúrese de que ha compilado su archivo * .cs antes de navegar por la página ASPX.

+0

Este fue mi problema. Uno tiene que construir el proyecto antes de llamarlo desde ASPX, de lo contrario obtendrá intellisense marcándolo como inexistente. –

2

me gustaría crear una propiedad para acceder a la variable, así:

protected string Test 
{ 
    get; set; 
} 

Y en su margen de beneficio:

<%= this.Test %> 
24

En su código detrás de archivo, tiene una variable pública

public partial class _Default : System.Web.UI.Page 
{ 
    public string clients; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     // your code that at one points sets the variable 
     this.clients = "abc"; 
    } 
} 

ahora en su código de diseño, solo asigne eso a algo, como:

<div> 
    <p><%= clients %></p> 
</div> 

o incluso una variable javascript

<script type="text/javascript"> 

    var clients = '<%= clients %>'; 

</script> 
1

La mirada HelloFromCsharp.aspx como esto

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HelloFromCsharp.aspx.cs" Inherits="Test.HelloFromCsharp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <p> 
     <%= clients%> 
    </p> 
    </form> 
</body> 
</html> 

Y el HelloFromCsharp.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace Test 
{ 
    public partial class HelloFromCsharp : System.Web.UI.Page 
    { 
     public string clients; 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      clients = "Hello From C#"; 
     } 
    } 
} 
0

Puede acceder a/propiedad pública protegida mediante el el enlace de datos <%# myproperty %> expresión tal como se indica a continuación:

<asp:Label ID="Label1" runat="server" Text="<%#CodeBehindVarPublic %>"></asp:Label> 

debe llamar a DataBind método, de lo contrario no se puede evaluar.

public partial class WebForm1 : System.Web.UI.Page 
    { 
    public string CodeBehindVarPublic { get; set; } 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      CodeBehindVarPublic ="xyz"; 
     //you should call the next line in case of using <%#CodeBehindVarPublic %> 

      DataBind(); 
     } 

}

Cuestiones relacionadas