Pregunta

Esto no ejecuta el delimitador (se muestra textualmente en el diálogo de confirmación). Por qué no? Además, esa variable se establece en el código subyacente, pero está lista para cuando se llame a PreRender, así que debería estar bien, ¿no?

<asp:LinkButton ... OnClientClick=
    "return confirm('Are you sure you want to remove Contract 
        Period <%= ContractPeriod_N.Text %>?');" />
¿Fue útil?

Solución

Intenta hacerlo en el código detrás:

       theLinkButton.OnClientClick = 
"return confirm('Are you sure you want to remove Contract Period " +  
    Server.HtmlEncode(ContractPeriod_N.Text) + "?');"; 

Otros consejos

Debe configurar la propiedad para que sea todo desde un bloque de renderizado o completamente sin ella. Pruébalo

<asp:LinkButton ... OnClientClick=
    "<%= "return confirm('Are you sure you want to remove Contract 
        Period " + ContractPeriod_N.Text + "?');" %>" />

Por supuesto que no se ejecuta. Está en el medio de una cadena literal. ¿Qué haría si quisiera tener el <% texto en una cadena en alguna parte?

Vea mi respuesta a una pregunta diferente aquí . Creo que puede lograr lo que quiere con un ExpressionBuilder personalizado similar a

/// <summary>
/// An Expression Builder for inserting raw code elements into ASP.NET markup.
/// Code obtained from: http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx
/// </summary>
[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : ExpressionBuilder
{
    /// <summary>
    /// Inserts the evaluated code directly into the markup.
    /// </summary>
    /// <param name="entry">Provides information about the expression and where it was applied.</param>
    /// <param name="parsedData">Unused parameter.</param>
    /// <param name="context">Unused paramter.</param>
    /// <returns>A <see cref="CodeExpression"/>.</returns>
    public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
    {
        return new CodeSnippetExpression(entry.Expression);
    }
}

Su marcado se vería así:

<asp:LinkButton ... OnClientClick=
"return confirm('Are you sure you want to remove Contract 
    Period <%$ Code: ContractPeriod_N.Text %>?');" />

Si está utilizando enlace de datos, puede configurarlo de esta manera

<asp:LinkButton runat="server" Text="Hello" OnClientClick='<%# String.Format("return confirm(\"Are you sure you want to remove Contract Period {0}?\");", ContractPeriod_N.Text) %>' />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top