从javascript添加 ASP.Net 标签,为什么这样做



>我得到了一个ASPX页面,其中包含以下代码

public partial class test : Page
{
    protected void test(object sender, EventArgs e)
    {
         throw new Exception("test");
    }
}

和以下 ASPX 代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Thumbnail</title>
</head>
<body>
    <form id="form1" runat="server">
    <div id="buttonTarget">
    </div>
    </form>
</body>
</html>

如果我运行以下 javascript,则会在页面上添加一个按钮:

$('#buttonTarget').html('<asp:Button runat="server" ID="tst" CssClass="buttons" OnClick="Test" Text="Test"/>');

这些按钮的显示方式与元素检查器中的 asp 标记的显示方式相同。当我单击该按钮时,服务器端函数被调用,并且站点因"测试"异常而中断

我知道这不是好的做法,但我想知道为什么会这样。为什么这个按钮调用服务器端函数,为什么它显示为普通按钮?

--编辑--

aspx 代码是一个简化版本。实际代码使用 gridview 控件,并使用 javascript 在表中插入行。这些行包含标记。

扩展@Mamun可能所说的内容,当页面在服务器上执行时,它会在 JS 字符串中看到 asp 标记并将其转换为适当的 HTML。如果您在浏览器中查看页面上的源代码,您可能会在 JS 调用中看到类似以下内容而不是 ASP 标记:

$('#buttonTarget').html('<input type="submit" name="ctl00$MainContent$tst" value="Test" id="MainContent_tst" class="buttons" />');

相关内容

最新更新