>我得到了一个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" />');