встроенная динамическая строка в ascx - PullRequest
3 голосов
/ 30 октября 2009

Этот разделитель не выполняется (дословно отображается в диалоговом окне подтверждения). Почему бы и нет? Кроме того, эта переменная установлена ​​в коде позади, но готова к тому времени, когда PreRender будет вызван, поэтому я должен быть в порядке, верно?

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

Ответы [ 5 ]

3 голосов
/ 30 октября 2009

Попробуйте сделать это в коде:

       theLinkButton.OnClientClick = 
"return confirm('Are you sure you want to remove Contract Period " +  
    Server.HtmlEncode(ContractPeriod_N.Text) + "?');"; 
1 голос
/ 30 октября 2009

Конечно, это не выполняется. Это в середине строкового литерала. Что делать, если вы хотите, чтобы текст <% был где-то в строке?

1 голос
/ 30 октября 2009

Смотрите мой ответ на другой вопрос здесь . Я считаю, что вы можете достичь того, что вы хотите, используя пользовательский ExpressionBuilder, похожий на

/// <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);
    }
}

Ваша разметка будет выглядеть так:

<asp:LinkButton ... OnClientClick=
"return confirm('Are you sure you want to remove Contract 
    Period <%$ Code: ContractPeriod_N.Text %>?');" />
1 голос
/ 30 октября 2009

Вам нужно установить свойство так, чтобы оно было все из блока рендеринга или полностью без него. Попробуйте это

<asp:LinkButton ... OnClientClick=
    "<%= "return confirm('Are you sure you want to remove Contract 
        Period " + ContractPeriod_N.Text + "?');" %>" />
0 голосов
/ 30 октября 2009

Если вы используете привязку данных, вы можете установить ее следующим образом

<asp:LinkButton runat="server" Text="Hello" OnClientClick='<%# String.Format("return confirm(\"Are you sure you want to remove Contract Period {0}?\");", ContractPeriod_N.Text) %>' />
...