【问题标题】:Refresh content-page asynchronously?异步刷新内容页面?
【发布时间】:2011-04-17 10:56:52
【问题描述】:

我有一个母版页“PartialUpdate.Master”和两个简单​​的内容页“WebForm1.aspx”和“WebForm2.aspx”

WebForm1.aspx/WebForm2.aspx:内容页面只显示它们的文件名

母版页“PartialUpdate.Master”有 2 个按钮和一个 ContentPlaceHolder 在更新面板中。单击按钮时,我想查看相应的内容页面

这就是它的样子......

PartialUpdate.Master:

<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div>
        Master Page  
        <asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" 
        runat="server">
            <ContentTemplate>
                <asp:Button ID="btnForm1" CommandArgument="WebForm1.aspx" 
                runat="server"  Text="Form1"                                    OnClick="ChangeForm_Click" />
               <asp:Button ID="btnForm2" CommandArgument="WebForm2.aspx" 
                runat="server" Text="Form2" 
                OnClick="ChangeForm_Click" />
                <hr />
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
        </ContentTemplate>
        <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnForm1" 
                EventName="Click" />
            <asp:AsyncPostBackTrigger ControlID="btnForm2" 
                EventName="Click" />
        </Triggers>
    </asp:UpdatePanel>
    </div>
    </form>
</body>

PartialUpdate.Master.cs 背后的代码

    protected void ChangeForm_Click(object sender, EventArgs e)
    {
        Button btn = sender as Button;
        Response.Redirect(btn.CommandArgument);
    }

这里的问题是 Response.Redirect() 触发整页回发。 我只是想让Master异步刷新'ContentPlaceHolder'中的内容(这就是我添加AJAX UpdatePanel的原因)

换句话说,我想动态更改 Master 显示的内容页面,而不会导致整页回发。

这可能吗?如果有怎么办?

谢谢你 克里斯

【问题讨论】:

    标签: asp.net asp.net-ajax


    【解决方案1】:

    您可以在 ajax 调用中使用 WebRequest 调用并将收到的内容写入页面... 但是你不能“知道”你想要重定向到另一个页面而不回发的浏览器。

    【讨论】:

    • '...用 ajax 中的 WebRequest 调用'是什么意思 你能给我一些代码吗?谢谢
    • // *** Establish the request HttpWebRequest loHttp = (HttpWebRequest) WebRequest.Create(lcUrl); // *** Set properties loHttp.Timeout = 10000; // 10 secs loHttp.UserAgent = "Code Sample Web Client"; // *** Retrieve request info headers HttpWebResponse loWebResponse = (HttpWebResponse) loHttp.GetResponse(); Encoding enc = Encoding.GetEncoding(1252); // Windows default Code Page StreamReader loResponseStream = new StreamReader(loWebResponse.GetResponseStream(),enc); string lcHtml = loResponseStream.ReadToEnd(); loWebResponse.Close(); loResponseStream.Close();
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-17
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2020-07-28
    相关资源
    最近更新 更多