これは概念的な質問ですが、ユーザー入力に基づいて.Net WebControlsをページに追加できるようにしたいと考えています。私はこれらのコントロールをサーバーから生成されたWebControlsとUserControlsにします。私はコントロールが完全にレンダリングされていることを確認しながらこれを行う方法について実際にはわかりません。私は簡単にJQueryからサーバーにリクエストを行い、返されたマークアップを問題なくページに追加できます。 AJAXを介してJQueryに戻すためにWebControl/UserControlのフルマークアップを生成する方法はありますか?JQueryとAJAXを使用して.Net WebControlをロードする
答えて
ページへの非同期コールバックを作成するには、AJAXを使用する必要があります。クライアントからこれをトリガーしたい場合は、おそらく__doPostBack
を使用し、コードビハインドのRaisePostBackEvent
メソッドをオーバーライドすることができます。
<script type="text/javascript">
loadControls = function(input){
__doPostBack(input.id, input.value);
}
</script>
<asp:UpdatePanel ID="pnlLoadControls" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtInput" runat="server" onkeyup="loadControls(this)" />
<asp:PlaceHolder ID="plcLoadedControls" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
そして、コードビハインドで
:protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument)
{
base.RaisePostBackEvent(source, eventArgument);
if (source == txtInput)
{
plcLoadedControls.Controls.Add(new LiteralControl("Hello World!"));
}
}
私はこれをjavascript/jqueryだけで行い、別のページにリクエストしたいと考えていました。私はページが毎回完全なライフサイクルを経るように気をつけています。私はむしろコントロールをスクリプトに注入したいと思います。 – mrK
jQueryでやりたければ、AJAXリクエストを作成し、そのコンテンツをiframeにロードすることができます。それを薄く効率的に保つには、リクエストを 'HttpHandler'などに送ることを検討してください。 –
iframeはiPad上で表示されたときにスクロールが許可されないので怖いです。これらのコントロールのいずれかにロードされたカスタムコンテンツは、コンテナの境界を超えて拡張することはできません。 – mrK
私はあなたがWebフォームを使用していると仮定しています。 – Tejs
私はWebFormsが何に適用されるかについては明確ではありませんが、System.Web.UI.WebControls名前空間を使用しています。 – mrK
私はASP.NET WebFormsとASP.NET MVCを意味します。これはMVCでは簡単です。 – Tejs