您好我如何在一个Web表单div /
中加载Web表单所以我在主页面内打开了网页表单'帐户'。
在我的帐户网络表单上,当用户点击它以在帐户页面中加载另一个网络表单时,我想要的菜单。
我正在使用ASP.NET C#。
抱歉我的英语不好。
谢谢
答案 0 :(得分:2)
如果要在服务器端执行此操作,可以通过将usercontrol的实例加载到表单与实际页面来完成。 Click here to see an MSDN example并确保使用更新面板来管理回发。
如果你想做这个客户端,你可以通过ajax并调用ashx(处理程序文件) 管理这个客户端:
在您的aspx文件中添加以下内容: 标题中的
<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>
然后在体内
<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>
然后在你的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;
}
}
}
您还需要创建用户控制文件,但我会将该代码留给您。 这个例子中发生了一些事情。该按钮用于证明后置以确保不重新加载控件。我还添加了一个你不需要的动画,但这是我从前一段时间开始的一个旧的概念验证片,所以你可以忽略那些代码。
我知道你提到了母版页的用户,所以你很可能想把javascript分解成一个js文件,然后一定要用脚本管理器加载它:
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
<asp:ScriptReference Path="~/js/jquery-1.7.js" />
<asp:ScriptReference Path="~/js/yourcontrolloader.cs" />
</scripts>
</asp:ScriptManager>
这在使用母版页时是必需的,否则由于服务器端渲染,您的引用将丢失并且脚本永远不会被调用。您还可以在实际页面与母版页中使用部分引用,但这取决于您。
祝你好运