gpt4 book ai didi

asp.net - 为什么我可以在没有 runat=server 的情况下从服务器端访问 HTML 元素?

转载 作者:行者123 更新时间:2023-12-04 21:33:23 25 4
gpt4 key购买 nike

<%@ Page Language="C#" %>

<!DOCTYPE html>

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
myTr.Visible = false;
mySpan.Visible = false;
}
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<table runat="server">
<tr id="myTr">
<td>Hello</td>
<td><span id="mySpan">World</span></td>
</tr>
<tr>
<td>Hi</td>
<td>Bye</td>
</tr>
</table>
</form>
</body>
</html>

通知 myTrmySpan 两者都没有 runat=server ,但编译器只在 mySpan.Visible = false 上给出错误.

enter image description here

为什么编译器不报告 myTr.Visible = false 上的错误?

最佳答案

我的猜测是您可以访问您的 tr因为该表在服务器上运行,而 tr是表本身的一部分。

另一方面,span元素只能从客户端访问,因为它没有在服务器端呈现。

如果您为表的某个 td 添加一个 id,您也可以在服务器端脚本上访问它。但是,如果您删除 runat="server"从表中,您将在尝试访问表组件时遇到构建错误。

<table runat="server">
<tr id="myTr">
<td id="myTd">Hello</td> <%--This td is also accessible from the server script--%>
<td><span id="mySpan">World</span></td>
</tr>
</table>

UPDATE: OK, It's not a guess anymore. According to the great explanation from Michael Amundsen and Paul Litwin on their book ASP.NET for Developers. You can see the reason there.



根据您的评论也在这里总结:
在第 136 页的副标题:表头 (Th)、行 (Tr) 和详细信息 (Td) 上说:您还可以使用服务器端代码来操作表的 th、tr 和 td 标签。 list 8.9 使用服务器端代码操作 Th、Tr 和 Td 标签 与你的非常相似。

基本上是一张带有 runat="server" 的表和 th , trtd仅具有 id 属性的元素(无 runat="server")可从 Page_Load 有效访问列表顶部的事件处理程序。

如果您继续阅读,您将看到有关服务器控件以及 ASP.NET 如何将它们与 Html 元素匹配的说明。

希望这可以帮助!

关于asp.net - 为什么我可以在没有 runat=server 的情况下从服务器端访问 HTML 元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45449891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com