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

标签 asp.net

<%@ 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/

相关文章:

c# - ASP.NET 5 中的 Web API 身份验证

c# - 使用 Web 表单和 C# 的动态所需页面标题

c# - 使用 updatepanel 和母版页提交表单后设置 javascript ScrollTo

asp.net - gridview asp.net 将鼠标悬停在 TR 上查找在服务器端代码上单击了哪一行

asp.net - 为什么 ASP.NET 自动生成的 .designer 代码类型不正确?

asp.net - IISHandler错误未实现接口(interface)成员 'System.Web.IHttpHandler.IsReusable',

c# - 页脚按钮的 Gridview colspan

javascript - 将 div 传递给 jquery 函数并获取其 innerhtml

asp.net - IIS URL 重写模块 : Url. Content() 无法正确解析 CSS/图像路径

c# - 非编译项目中的代码重用