Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net ascx中的内联动态字符串_Asp.net_Ascx_Delimiter - Fatal编程技术网

Asp.net ascx中的内联动态字符串

Asp.net ascx中的内联动态字符串,asp.net,ascx,delimiter,Asp.net,Ascx,Delimiter,这不会执行分隔符(在确认对话框中逐字显示)。为什么不呢?另外,该变量在codebehind中设置,但在调用PreRender时已经准备好了,所以我应该没事吧 <asp:LinkButton ... OnClientClick= "return confirm('Are you sure you want to remove Contract Period <%= ContractPeriod_N.Text %>?');" /> 您需要设置属性,

这不会执行分隔符(在确认对话框中逐字显示)。为什么不呢?另外,该变量在codebehind中设置,但在调用PreRender时已经准备好了,所以我应该没事吧

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

您需要设置属性,使其完全来自渲染块或完全不带输出。试试这个

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


当然,它不会被执行。它在字符串文字的中间。如果你想让
看到我对另一个问题的回答,你会怎么做。我相信,使用类似于的自定义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.NET标记的表达式生成器。
///代码来源:http://weblogs.asp.net/infinitiesloop/archive/2006/08/09/The-CodeExpressionBuilder.aspx
/// 
[表达式前缀(“代码”)]
公共类代码ExpressionBuilder:ExpressionBuilder
{
/// 
///将经过计算的代码直接插入到标记中。
/// 
///提供有关表达式及其应用位置的信息。
///未使用的参数。
///未使用的参数。
///A。
公共重写CodeExpression GetCodeExpression(BoundPropertyEntry条目、对象解析数据、ExpressionBuilderContext上下文)
{
返回新的代码片段表达式(entry.Expression);
}
}
您的标记将如下所示:

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

尝试在代码隐藏中执行此操作:

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

如果您使用的是数据绑定,那么可以这样设置

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

您不能在服务器控件内部使用-如果尝试此操作,您将得到服务器标记不能包含编译器错误!我把它归为magic=o,在asp中似乎有很多