2009-10-30 57 views
3

这不会执行分隔符(它在确认对话框中逐字显示)。为什么不?此外,该变量是在代码隐藏中设置的,但在PreRender被调用的时候已准备就绪,所以我应该没问题?ascx中的内嵌动态字符串

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

回答

3

尝试在后面的代码做它:

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

您需要设置该属性,以使其全部来自渲染块或完全与out。试一试

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

你不能在服务器控件里使用<%= %>-你会得到服务器标签不能包含<% ... %>构造编译错误,如果你尝试的话! – RichardOD 2009-10-30 18:56:57

1

当然,它不会被执行。它位于字符串文字的中间。如果你想在某个字符串中使用<%文本,该怎么办?

+0

我有点粉笔它魔术= o似乎有很多在asp – 2009-10-30 19:05:34

1

看到我对另一个问题的回答here。我相信你能完成你想要的使用的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 %>?');" /> 
0

如果你正在使用数据绑定,那么你可以这样设置

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