asp.net
  • inline-code
  • 2011-10-05 20 views 6 likes 
    6

    Estoy tratando de colocar un * al lado del nombre basado en una condición.Concatenar dos o más cadenas en el código en línea ASP.NET

    Mi código:

    <asp:Label ID="lblOne" runat="server" Text= '<%# Eval("name") + ((Eval("StatusId").Equals(0) && Eval("assignfilename") == null) ? " *" : "") %>' > </asp:Label> 
    

    Gracias

    BB

    +0

    Cuál es la salida o error que está viendo? –

    Respuesta

    3

    Si usted está empujando los límites de lo que puede manejar fácilmente con el código en línea, siempre se puede escribir una función en su lugar. A continuación, puede hacer algo como:

    <asp:Label ID="lblOne" runat="server" Text= '<%# EmitSomeText(Eval("name"), Eval("StatusId"), Eval("assignfilename")) %>' /> 
    

    Esto le permite romper una expresión compleja arriba en muchas líneas sin embargo tiene que ser, que pueden ser un poco menos incómoda. Puede usar una función en su CodeBehind o en cualquier otra clase.

    Si está vinculando a una clase a la que tiene acceso, puede agregar una propiedad de solo lectura. Luego puede hacer algo como Eval ("MyNewProperty").

    Lo uso para exponer el formato que necesito volver a usar. Por ejemplo, Customer.CustomerFullName podría devolver el apellido primero separado como una coma (manejo inteligente de situaciones donde faltan uno u otro o ambos) más un título opcional, ya que tal vez mis clientes son médicos y algunos de ellos tienen doctores y médicos.

    3

    Para simples escenarios únicos, la función de código subyacente funciona bien.

    Es posible que también desee considerar codificarlos como una propiedad en el objeto subyacente.

    Por ejemplo, si el texto generado se va a usar en más de una instancia, necesitará codificar la función con Evals varias veces en diferentes formas o controles.

    Crearía una propiedad en el objeto de datos, p. NameWithStatusStar, su etiqueta se puede enlazar directamente a la propiedad con el código dentro de Eval ("NameWithStatusStar")

    Esto es más descriptivo y reutilizable que una serie de expresiones, además es más fácil de cambiar (por ejemplo, agregar otro campo, cambiar la fórmula, etc.)

    4

    No estoy muy familiarizado con los códigos en línea y su código parece ser un poco complicado. Pero también necesito concatenar un Eval ("registro") y un texto. Entonces, para responder la pregunta sobre cómo concatenar, ampersand funcionó para mí.

    '<%# Eval("name") & " *" %>' 
    

    Espero que esto ayude a cualquiera.

    2

    Puede hacerlo de esta manera:

    Text='<%#"CustomText "+Eval("Name")%>' 
    
    +0

    Sería más útil si proporcionara un poco más de contexto. – gpgekko

    -1
    Text='<%# string.Concat(Eval("FirstName"), " ", Eval("LastName"))%>' 
    

    Esto funcionó para mí en mi proyecto. Encontrado aquí:

    Concatenate text with Eval

    +4

    No publique respuestas idénticas a preguntas múltiples. Publique una buena respuesta, luego vote/marque para cerrar las otras preguntas como duplicados. Si la pregunta no es un duplicado, * adapte sus respuestas a la pregunta. * –

    1
    Text='<%#String.Concat(Eval("UserId"), Eval("Username")) %>' 
    

    Esto funcionó para mí en mi proyecto.Encuentra aquí:

    Concatenate text with Eval

    Cuestiones relacionadas