.NETで、にrunat =サーバーとは、紛争の背景ページの指示現象を実行します

著作権:https://blog.csdn.net/superwfei/article/details/84633759

ああ。注意すべき小さな場所

.NET開発では、私たちはしばしばいくつかのコントロールを定義するには、にrunat =サーバーを使用して、これらのコントロールのような、背景のコードを使用して管理されている<ASP:パネル>ラ、<ASP:マルチビュー>ラ、<ASP:リピータ>あなた、他に我々はここで言って、しかし、管理が、1つはありません。しかし、他のすべてのHTMLタグにもかかわらず、我々は背後にも取得することができ、および管理することができ.NETコードで、にrunat =サーバーを使用していません、 C#の例については、1例

最初はページのaspxファイルの内容であります

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xxxx.aspx.cs" Inherits="xx.xxx.xxxx" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>这个title默认是runat=server的,即便不加,他也可以获取到,只要head定义了runat=server</title>
    <link rel="stylesheet" href="/css/product.css" />
</head>
<body>
	<div id="nav">
		<asp:Repeater ID="rp_nav" runat="server">
			<ItemTemplate>
				<li><a href="<%#Eval("导航链接")%>"><%#Eval("导航文字")%></a></li>
			</ItemTemplate>
		</asp:Repeater>
	</div>
</body>
</html>

だから、我々は結果を見て、Page_Loadの背景にコードの行を追加しました

ControlCollection cc = this.Page.Controls;

私たちは、詳細を見て、子どもたちのccは5を持って見つけることができます

CC [0]コンテンツ

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">

概要CCは[1]であります

<head runat="server">
    <title>这个title默认是runat=server的,即便不加,他也可以获取到,只要head定义了runat=server</title>
    <link rel="stylesheet" href="/css/product.css" />
</head>

CC [2]コンテンツ

<body>
	<div id="nav">

CC [3]コンテンツ

		<asp:Repeater ID="rp_nav" runat="server">
			<ItemTemplate>
				<li><a href="<%#Eval("导航链接")%>"><%#Eval("导航文字")%></a></li>
			</ItemTemplate>
		</asp:Repeater>

CC [4]コンテンツ

	</div>
</body>
</html>

ああ、あなたはすべてのコンテンツコントロールを介して取得することができるので、私たちだけで簡単にコントロールに対応する権利を見つける必要があり、彼は=サーバーにrunatなかった場合でも、バックグラウンドですべてのページのコンテンツを操作することができます

もちろん、注意が必要な問題があります。コンテンツへSystem.Web.UI.WebControlsオブジェクトとメソッドSystem.Web.UI.HtmlControlsアクセスはほとんどinnerHTMLプロパティによって同じ、HtmlControlsではなく、主にTextプロパティWebBrowserコントロールを通じて、ああ、自分自身の詳細は、治療することができます

次に反射によって、innerHTMLプロパティまたはテキストプロパティを取得し、その後、割り当てによって反射し、ページの内容を変更することができます

その後。その後。今日、私は修正aspxページ、怠惰な癌の攻撃を達成しています。バックグラウンドでのWebBrowserコントロールを判断したくない、直接<%をもし(真){%>書いた<%}%>、その後、問題を発見し、私はアップロードされていないスプールのすべての内容を通過!

次に、テストページ、または、コードのみで異なる場所では、背景ページ持つ<(true)の場合%を{%> <%}%>、災害、同一のControlCollectionのCC = this.Page.Controlsと;実測値、唯一の二人の子供、一方が他方には私たちの定義をリピーターですHtmlHead、である、これらの2つのオブジェクトがにrunat =サーバーの設定を持っています

オリジナル。ASPXにコードを記述し、結果ページがプリコンパイルすることはできませんので、あなたは、バックグラウンドですべてのコンテンツを取得することはできません。レッスンああを学びます

おすすめ

転載: blog.csdn.net/superwfei/article/details/84633759