2017-08-02 4 views
5
<%@ 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 =サーバーを持っていないが、コンパイラはmySpan.Visible = falseにエラーが発生します。なぜ、サーバー側からrunat = serverなしでHTML要素にアクセスできますか?

enter image description here

なぜmyTr.Visible = falseにレポートエラーをコンパイラしないのですか?

答えて

1

私の推測では、trにアクセスできるのは、テーブルがサーバーで実行され、trがテーブル自体の一部であるためです。

他の方法では、span要素は、サーバー側でレンダリングされていないため、クライアントからのみアクセスできます。

テーブルのIDに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、それはもう推測ではありません。彼らの本ASP.NET for Developersのマイケルアムンゼンとポールリトウィンの大きな説明によると、あなたはその理由を見ることができます。

また、あなたのコメントのとおり、ここで要約:136ページ 、字幕:表のヘッダー(TH)、行(TR)とディテール(TD)それは言う:あなたはまたにサーバー側のコードを使用することができますテーブルのth、tr、tdタグを操作します。 リスト8.9サーバーサイドコードを使用してTh、Tr、およびTdタグを操作するは、あなたのものと非常によく似ています。

は、基本的にIDを持つrunat="server"thtrtd要素を持つテーブルを効果的にリストの上部にPage_Loadイベントハンドラからアクセスされるのみ(なしにrunat =「server」を)属性ありません。

あなたが読んでいれば、サーバーコントロールと、ASP.NETがそれらをHTML要素とどのようにマッチさせるかについての説明が表示されます。

希望すると便利です。

+0

本書では、私が目が見えない限り、なぜrunat = serverなしで要素にアクセスできるのかについては言及していません。あなたは公正に使用し、答えにその部分を含めることができますか? – Gqqnbig

+0

@LoveRight 136ページで、サブタイトル:テーブルヘッダー(Th)、行(Tr)、および詳細(Td):サーバー側のコードを使用してテーブルのth、tr、およびtdタグを操作することもできます。リスト8.9:Th、Tr、Tdタグを操作するサーバーサイドコードを使用するのはあなたのものと非常によく似ています。基本的には、リストトップの上のPage_Loadイベントハンドラから効果的にアクセスされるid属性(runat = "server"ではなく)を持つrunat = "server"とth、tr、td要素を持つテーブル。読んだりすると、サーバーコントロールと、ASP.NETがそれらをHtml要素にマッチさせる方法についての説明が表示されます。 –