こんにちはfroms。負荷Webフォームは、だから私は、マスターページ内の開口部のウェブフォームのアカウント」を持っている私は1つのWebフォームのdiv/</p> <p>内のWebフォームをロードする方法のdiv
私のアカウントのWebフォームには、ユーザーがアカウントページ内に別のWebフォームをロードするためにクリックしたときに必要なメニューがあります。
私はASP.NET C#を使用しています。
申し訳ありません。あなたはこのサーバー側をしたい場合は
おかげ
こんにちはfroms。負荷Webフォームは、だから私は、マスターページ内の開口部のウェブフォームのアカウント」を持っている私は1つのWebフォームのdiv/</p> <p>内のWebフォームをロードする方法のdiv
私のアカウントのWebフォームには、ユーザーがアカウントページ内に別のWebフォームをロードするためにクリックしたときに必要なメニューがあります。
私はASP.NET C#を使用しています。
申し訳ありません。あなたはこのサーバー側をしたい場合は
おかげ
が、これは実際のページ対フォームにユーザーコントロールのインスタンスをロードすることによって達成することができます。 Click here to see an MSDN exampleを使用してください。ポストバックを管理するには、必ず更新パネルを使用してください。
あなたは、このクライアント側をしたい場合は、AJAXを介して、そうと、このクライアント側を管理するにASHX(ハンドラファイル) を呼び出すことができます。
あなたのaspxファイル内の次の行を追加します。
内ヘッダ本体
<body>
<form id="form1" runat="server" >
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div>
<div id="panel" >
<p>stuff here</p>
</div>
<p><%= DateTime.Now %></p>
<div id="div1" class="slide">
<p class="btn-slide">Expand Panel</p>
</div>
<br />
<asp:Button Text="Click me" ID="clickButton" runat="server" />
<div id="loadcontrol1" />
</div>
</form>
</body>
内
<script type="text/javascript">
$(function() {
$("#panel").hide();
});
$(document).ready(function() {
$(".slide").click(function() {
$("#panel").show("slow", false);
jQuery.ajax({
type: "POST",
url: "controlloader.ashx",
dataType: "html",
success: function (response) {
jQuery('#loadcontrol1').append(response);
},
error: function() {
jQuery('#loadcontrol1').append('error');
}
});
});
});
</script>
そして
次に、あなたASHXファイル内の
public class controlloader : IHttpHandler
{
//If annonymous id is turned on IRequireSessionState Interface may be needed to write session variabled such as user auth.
// Generic handlers by default implementIReadOnlySessionState
public void ProcessRequest (HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(RenderPartialToString("~/Control1.ascx")); ;
}
private string RenderPartialToString(string controlname)
{
Page page = new Page();
Control control = page.LoadControl(controlname);
page.Controls.Add(control);
StringWriter writer = new StringWriter();
HttpContext.Current.Server.Execute(page, writer, false);
return writer.ToString();
}
public bool IsReusable
{
get
{
return false;
}
}
}
また、ユーザーコントロールファイルを作成する必要がありますが、私はあなたにそのコードを残しておきます。 この例ではいくつかのことが起こっています。このボタンは、制御が再ロードされないように、ポストバックを確認するために使用されます。あなたが必要としないアニメーションも追加しましたが、これは私が以前から持っていた概念実証済みのものでしたので、そのコードを無視することができます。
私はあなたがより可能性が高いとのjsファイルにはJavaScriptを考慮して、スクリプトマネージャを使用して、それをロードすることを確認したいでしょうので、あなたはマスターページのユーザーを述べ知っている:これは
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/js/jquery-1.7.js" />
<asp:ScriptReference Path="~/js/yourcontrolloader.cs" />
</scripts>
</asp:ScriptManager>
それ以外の場合は、サーバー側で参照が失われ、スクリプトが呼び出されないため、マスターページを使用する場合に必要です。また、実際のページとマスターページの部分参照を使うこともできますが、これはあなた次第です。
運が良ければ
iFrameで2番目のページ/フォームを開くことができます。これは、メニューでオプションをクリックすると、JavaScriptを介してトリガされます。 – Zachary
マスターページのネストの代替方法もあります。あなたはaccountMasterを持つことができ、他のページはaccountmasterをそのマスターページとして使用します – peroija