アクセスカウンタ - ASP.NET Webユーザーは、開発および使用例を制御する
開発では、ASP.NET Webユーザーコントロールの開発では、使用には、このエッセイを書いた後に、この技術の研究に不可欠な技術ですが行う主に約などのものは、元のれんが造りの家で撮影される心配。
shinobi.jp - アクセス解析, ブログ, カウンター とかを提供しているNINJA TOOLSの別館的サイト
1。はじめに
2。 Webユーザーコントロールの作成
3。 Webユーザーを使用してWebフォームのコントロールで
5。メソッドの追加
6。カスタムイベントを追加する
7。クライアントアクセスサーバーの制御角を制御
1。はじめに
ASP.NETには、ビルド時に- Webサーバーコントロールの我々がコントロールを介して自分を作成しますが、我々の開発のニーズを満たすことができない。
1)ユーザーコントロールは:ユーザーコントロールは、タグを配置する能力がされているのコンテナおよびWebサーバーコントロール。次に、ユーザーコントロールは、単位として扱うことができ、そのプロパティやメソッドが定義されて。
2)カスタムコントロール:カスタムは、このようなコントロールまたはWebControlから派生したクラスを記述することです。(今のところ私は、その開発のための時間が続いて練習ドリルを作ったMSDNを、もう少し詳細を書き込むために使用よるとテクノロジーの側面で)
は、複雑なコントロールを作成するので、最も適切なインターフェイス要素を既存のコントロールを再利用することができますので、多くのカスタムコントロールを作成するよりも、簡単にユーザーコントロールを作成します。。。
2)、@ Controlディレクティブのユーザーコントロールのステートメントを使用して、@ Pageディレクティブを使用してWebフォーム;
4)ユーザーコントロールを含めることはできません 、
2。 Webユーザーコントロールの作成
ソリューションエクスプローラで選択されたサイトでは、右クリックメニューには、ポップアップウィンドウで、[新しい項目の追加]をWebユーザーコントロールを選択すると、のように
[追加]をクリックすると、溶液が次のようにも新しいWebユーザーコントロールで見ることができます:
。
テキストボックス、ボタンとして表示されるページにLabelコントロールをドラッグしますツールボックスから、[デザイン]ビューに切り替えるには、TestWebUserControl.ascxを編集:
Buttonコントロールを選択し、ダブルクリックして、応答コードのイベントをクリックして追加するには:
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = TextBox1.Text;
}
。
3。 Webユーザーを使用してWebフォームのコントロールで
、TestWebUserControl.ascxドラッグのページへの解決策:ここで、テストのために、フォーム上のユーザーコントロールには良い仕事を行うには、(デザインビューに存在する必要がありますに注意してください)Default.aspxの[デザイン]ビューに切り替えるには、選択のように:
プログラム[ソース]ビューでDefault.aspxへの復帰を停止、我々は、"ドラッグ"を見て、最終的にIDEは私たちがやったことです。可能なコードで発見されるユーザーコントロールへの参照文に実行されている行@ Registerディレクティブを追加し、コードは以下の通りです:
<%@ Register Src="TestWebUserControl.ascx" TagName="TestWebUserControl" TagPrefix="uc1" %>
このコマンドは、様々な属性の文字通りの意味で見られるように、非常に簡単です。今、私たちのような、何"UC1は"ではなく、より多くの意味を理解するために我々のプレフィックスを制御するには、このステートメントを変更するには何かを、コードは以下の通りです:
<%@ Register Src="TestWebUserControl.ascx" TagName="TestWebUserControl" TagPrefix="Clark" %>
もちろんだけでなく、変更対応の他の部分では、次のように:
ウィル
<Clark:TestWebUserControl ID="TestWebUserControl1" runat="server" />
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Src="TestWebUserControl.ascx" TagName="TestWebUserControl" TagPrefix="Clark" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="" >
<head runat="server">
</head>
<body>
<form id="form1" runat="server">
<div>
<Clark:TestWebUserControl ID="TestWebUserControl1" runat="server" />
<br />
<Clark:TestWebUserControl ID="TestWebUserControl2" runat="server" />
</div>
</form>
</body>
</html>
もちろん、Web.config構成でも、コンポーネントに登録することができ、サイト全体に適用され、ここで述べられていない。
4。プロパティの追加
。。。)カジュアルなバーに、TestWebUserControl.ascx.csは、次のコードを追加、編集:
public string LabelContext
{
get { return Label1.Text; }
set { Label1.Text = value; }
}
そのようなテキストプロパティは読み取りとも書いて、あまりにも単純な。。。
のようにLabelContextセット上のプロパティビューアでは、それぞれ、2つのユーザーコントロールを選択し、Default.aspxの[デザイン]ビューへの切り替えを選択してください:
次のように私たちは、Buttonコントロールを追加Default.aspxページで、プロパティの実装をテストするには、そのClickイベントに応答してコードを追加します:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(TestWebUserControl1.LabelContext + " " + TestWebUserControl2.LabelContext);
}
ボタンをクリックしてプログラムを実行し、効果が示されています:
5。メソッドの追加
プロパティは、それを増加させる、今のメソッドを追加します。TestWebUserControl.ascx.csを編集するには、次のコードを追加します:
public void ChangeLabelContext(object sender, string value)
{
Label1.Text = value;
}
あなたは私の方法は、これが彼らのために使用されるものです、送信者を持っていることを付記することができる?心配しないで、後ろにに記載されているイベントを追加します。。
このメソッドをテストするには、[デザイン]ビューに切り替えるには、ボタンを追加するには、Default.aspxを選択し、そのClickイベントには、次のレスポンスコードを追加します:
protected void Button2_Click(object sender, EventArgs e)
{
TestWebUserControl1.ChangeLabelContext(sender, "Hi");
TestWebUserControl2.ChangeLabelContext(sender, "cnblogs");
}
Now]ボタンをクリックしてプログラムを実行すると、効果が示されています:
6。カスタムイベントを追加する
プロパティと我々が行うメソッドは、事件?
まず、編集WebUserControlTest.ascx.csを続けるプロキシを定義すると、コードは以下の通りです:
public delegate void LabelContextChangedHandler(object sender, LabelContextChangedEventArgs e);
public class LabelContextChangedEventArgs : EventArgs
{
private string labelContext;
public LabelContextChangedEventArgs(string value)
{
labelContext = value;
}
public string LabelContext
{
get { return labelContext; }
}
}
TestWebUserControlは、変数、イベントトリガ機能のこのクラスのイベントを追加長い、コードは以下の通りです:
public event LabelContextChangedHandler LabelContextChanged;
private void OnLabelContextChanged(object sender, LabelContextChangedEventArgs e)
{
if (LabelContextChanged != null)
{
LabelContextChanged(sender, e);
}
}
次に、イベントのトリガでChangeLabelContext関数で、元のコードを変更する必要性を向上させる次のように:
public void ChangeLabelContext(object sender, string value)
{
Label1.Text = value;
}に
public void ChangeLabelContext(object sender, string value)
{
Label1.Text = value;
OnLabelContextChanged(sender, new LabelContextChangedEventArgs(value));
}
[OK]を!この時点では、ユーザーコントロールのイベントの定義を完了していると、さんがテストしてみましょうでこのイベントをトリガするタイミングを決定。
Default.aspx.cs、イベントの応答関数を追加する最初の編集は、コードは以下の通りです:
private void TestWebUserControl_LabelContextChanged(object sender, LabelContextChangedEventArgs e)
{
Button tmpButton = (Button)sender;
if (tmpButton.Text == "Button")
{
tmpButton.Text = e.LabelContext;
}
else
{
tmpButton.Text += " " + e.LabelContext;
}
}の効果を達成するためにユーザーコントロールLabelContextの値を設定するButtonコントロールのTextプロパティのイベントをトリガすることです。
LabelContextChangedユーザーおよび機能アップ[OK]をそれに"接続"の2つの部分に近い応答ページのコードで今すぐして、Page_Loadイベント!コード:
protected void Page_Load(object sender, EventArgs e)
{
TestWebUserControl1.LabelContextChanged += new LabelContextChangedHandler(TestWebUserControl_LabelContextChanged);
TestWebUserControl2.LabelContextChanged += new LabelContextChangedHandler(TestWebUserControl_LabelContextChanged);
}
今、私たちは、ページの2番目のボタンをクリックし、ここに示されて効果をクリックして、プログラムを実行します:
7。クライアントアクセスサーバーの制御角を制御
この問題は、実際には、Webユーザーコントロールの開発の範囲に属していない実際の開発は、それを置く私の"モーニンググローリー"気性のように精神笑で、是非"プル"この問題は多かれ少なかれ発生します。
一部の人々は、管理サーバのクライアント側の角がアクセスを制御する理由は、ASP.NETページは、ページを使用するようにクライアントのブラウザに解釈される主なぜなら、問題を希望質問は、ユーザーコントロールのID内のサーバーコントロールを行うには変化の一定量。私たちは、TextBoxコントロールは、IDを最初にTextBox1にあるが、TestWebUserControl1_TextBox1にそれの解釈のページの後に、このユーザーコントロールを開発した場合、我々は次のように、ソースコードを見ることができますブラウザビューに渡される:
<input name="TestWebUserControl1$TextBox1" type="text" id="TestWebUserControl1_TextBox1" />
言い換えると、ユーザーコントロールはサーバーコントロールのIDルールは、ユーザーコントロールに読み込み_サーバーコントロールのIDですクライアントページとして解釈され、我々は、この法律が容易に知っている。
HTML入力からパネルをドラッグすると、[デザイン]ビューに切り替えるには、TestWebUserControl.ascxを編集します(ボタン)コントロール(注:これは、制御するためのクライアントです)。その後、ShowTextBoxContextクライアント機能を呼び出すように設定されonclick属性を追加して[ソースの表示]に切り替えるには、この関数は、サーバーコントロール内のユーザーコントロールを動作させるには、完全なコードは以下の通りです:
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="TestWebUserControl.ascx.cs" Inherits="TestWebUserControl" %>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<input id="Button2" type="button" value="button" onclick="ShowTextBoxContext(<%= TextBox1.ClientID%>)"/>
<script type="text/javascript" language="javascript">
function ShowTextBoxContext(obj)
{
alert(obj.value);
}
</script>
通知は、未満%= TextBox1.ClientID%の>は、順序でクライアントのオブジェクトを取得するために、我々は、サーバーオペレーティング,"<%="、サーバー側で実行されるコードの間に"%の>"を実施し、まだですは簡単なことは?
今、私たちは、最初のテキストボックスに"開発を入力し、Webユーザーコントロールを使用して、[OK]を!!!",クリックするだけで、クライアントButtonボタンを追加するには、ユーザーコントロールでは、ダイアログボックスが私たちが記入示すポップアップ表示されます、プログラムを実行する内容は、結果が次のように:
もう一つ:あなたは、埋め込まれた、このアクセス方式のチェーン外部のこの角度の代わりにこれを使用している場合は行うことはできません。私の解決策は、DIVの層を見つけ、次に、適切なコントロールを得られるChildrenプロパティでアクセス最初にするので、クライアント、(それは常にクライアントコンポーネントをされている)のDIV層にサーバーコントロールにアクセスされる。しかし、推奨されていません多少面倒なの今後の展開のチェーン外でこの角度の使用中のユーザーコントロール、同じように、解決策を詳細に記載されていない。
8。コードのダウンロード