2008-10-22 11 views
19

Digamos que tengo un solo objeto del tipo de coche que quiero hacer como HTML:¿Hay alguna forma de vincular datos a un solo elemento sin, p. Ej.,? un control de repetidor?

class Car { 
    public int Wheels { get; set; } 
    public string Model { get; set; } 
} 

no quiero utilizar el repetidor ASP.NET o controles ListView para unirse porque parece demasiado prolijo. Solo tengo un objeto. Pero todavía quiero poder usar la sintaxis de enlace de datos para no tener que usar etiquetas o literales. Algo así como:

<div> 
    Wheels: <%# (int)Eval("Wheels") %><br /> 
    Model: <%# (string)Eval("Model") %> 
</div> 

¿Alguien sabe de un control por ahí que hace precisamente eso?

Y todavía no estoy preparado para cambiar a ASP.NET MVC.


Desafortunadamente, el control DetailsView no satisface mis necesidades, ya que no parece apoyar la sintaxis de estilo plantilla que yo después. También debe estar vinculado a un objeto de tipo DataSource.

Me gustó más la solución que sugirieron Maxim y Torkel. Intentaré ir por eso.

Respuesta

26

si la página es acerca de un tema específico (por ejemplo, disponer de Car.aspx? Carid = ABC123), que normalmente tienen una propiedad pública en la página llamada "CurrentCar"

public Car CurrentCar { get; set; } 

Y entonces puede tener lo siguiente:

<div> 
    Wheels: <%= CurrentCar.Wheels %><br /> 
    Model: <%= CurrentCar.Model %> 
</div> 

que le permiten tener seguridad de tipo. Solo asegúrese de tener un objeto válido asignado antes de la representación real.

+0

Aunque es posible que desee comprobar si hay CurrentCar siendo nula aquí antes de mostrar este marcado. – rjarmstrong

+0

Haría la propiedad 'protegida' en lugar de 'pública', a menos que tenga una razón para exponerla a otras clases (aparte de las subclases como la página ASPX, por supuesto) – JMD

5

Yo sugeriría que hagas coche una propiedad protegida en la página, lo que le permitirá acceder a él directamente en la página aspx:

<div> 
    Wheels: <%= Car.Wheels %> 
    Wheels: <%= Car.Models %> 
</div> 

Este enfoque es realmente mejor para escenarios individuales elemento de enlace de datos como el " vinculante "está fuertemente tipado.

+0

Wheels and Wheels. : P Tienes un error tipográfico allí. –

0

Una desventaja de la solución de propiedad protegida es que no se puede usar para vincular las propiedades de los controles.

Por ejemplo, lo siguiente no funcionaría:

<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" /> 
+0

¿Y por qué lo han protegido? público es mejor en este caso porque el 99,99% de las veces, no heredas de la página en otro lugar. Por supuesto, el marco funciona pero ... eso es todo. –

+1

Esa es exactamente la razón por la que quiero que esté protegido ... :) – JacobE

+0

En realidad, sí funciona con la sintaxis de enlace de datos <% # anterior ... Tuve otro problema que hizo que no funcionara al principio. – JacobE

Cuestiones relacionadas