首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从div加载另一个web中的web表单

问从div加载另一个web中的web表单
EN

Stack Overflow用户
提问于 2012-02-11 01:28:14
回答 1查看 3.3K关注 0票数 0

您好,如何在一个web表单中加载web表单div/

所以我有网页表单‘帐户’,这打开了内部的母版页。

在我的帐户网页表单,我有菜单,我想当用户点击它加载另一个网页内的帐户网页表单。

我正在使用ASP.NET C#。

很抱歉我的英语不好。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-11 01:52:56

如果你想在服务器端做到这一点,可以通过加载一个用户控件的实例到你的表单而不是实际的页面来实现。Click here to see an MSDN example并确保使用更新面板来管理post backs。

如果您想要这样做,您可以通过ajax并调用ashx (处理程序文件)来管理此客户端:

在您的aspx文件中添加以下内容:

在标题中

代码语言:javascript
复制
    <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>

然后在身体内部

代码语言:javascript
复制
<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文件中

代码语言:javascript
复制
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文件中,然后确保使用脚本管理器加载它,如下所示:

代码语言: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>

当使用母版页时,这是必需的,否则由于服务器端渲染,您的引用将丢失,脚本将永远不会被调用。您也可以在实际页面与母版页中使用部分引用,但这取决于您。

祝你好运

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9232075

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档