防止嵌入式ASP代码被转义

时间:2018-01-11 04:56:35

标签: javascript asp.net ajax asp.net-ajax

这个看起来类似于被问到here的问题,但OP提出的情况看起来不同,因为他接受的答案不符合我的要求。在我的情况下,我试图嵌入一个asp片段作为从onclick按钮调用的Javascript方法的参数,但结果是标记在编译时被转义。 ASP代码是:

<asp:Button runat="server" ID="Calculate_Mean" Text="Calculate Mean" 
OnClientClick="mean('<%$TextBoxA.ClientID + ',' + TextBoxB.ClientID + ',' +
TextBoxC.ClientID%>')"

我得到的结果是:

<input type="submit" name="Calculate_Mean" 
value="Calculate Mean"
onclick="mean(&#39;&lt;%=TextBoxA.ClientID%>&#39;);" id="Calculate_Mean" />

我已经提到并尝试过以下几页,但仍然无法解决问题:

Passing ASP.net control to JS Function
Different Embedded ASP Code Blocks and its uses

编辑:以下是渲染页面的屏幕截图: Screenshot of Page rendered

1 个答案:

答案 0 :(得分:1)

也许你可以改变一个html按钮的asp:按钮:

<button  onclick="mean( document.getElementById('<%=TextBoxA.ClientID%>'));" ></button>

或尝试在js函数中获取客户端ID:

ASPX

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function mean() {
            var a = document.getElementById('<%=TextBoxA.ClientID%>');
            var b = document.getElementById('<%=TextBoxB.ClientID%>');
            var c = document.getElementById('<%=TextBoxC.ClientID%>');
            alert(a.value);
            alert(b.value);
            alert(c.value);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="TextBoxA" runat="server" ></asp:TextBox>
                <asp:TextBox ID="TextBoxB" runat="server" ></asp:TextBox>
                <asp:TextBox ID="TextBoxC" runat="server"  ></asp:TextBox>
    <asp:Button runat="server" ID="Calculate_Mean" Text="Calculate Mean" 
        OnClientClick="mean();" />
    </div>
    </form>
</body>
</html>