【问题标题】:Page in page with telerik elements带有 Telerik 元素的页面中的页面
【发布时间】:2011-12-21 13:03:49
【问题描述】:

我有两个带有 rad 元素的页面(MasterPage.aspx 和 ChildPage.aspx)。 在 MasterPage.aspx 上,我通过 ajax (jQuery) 调用 ChildPage.aspx,并将响应(整个 ChildPage.aspx 页面)放在 MasterPage.aspx 中。我的问题是 MasterPage.aspx 元素有效,但在 ChildPage 上生成并放置在 MasterPage 中的那些(元素)无效。 使用 ajax 将一个页面加载到另一个页面的最佳实践是哪个页面都包含需要 RadScriptManager 和 RadAjaxManager 的 rad 元素?

母版页代码:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="TelerikTest._Default" %>

<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $.ajax({
                url: 'TestPage.aspx',
                type: "POST",
                data: "{ }",
                success: function (data) {
                    $("#content").html(data);
                }
            });
        });
    </script>
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <telerik:RadScriptManager ID="RadScriptManager1" runat="server">
</telerik:RadScriptManager>
<div>
<telerik:RadComboBox ID="RadComboBox1" Runat="server">
    <Items>
        <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem1" 
            Value="RadComboBoxItem1" />
        <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem2" 
            Value="RadComboBoxItem2" />
        <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem3" 
            Value="RadComboBoxItem3" />
    </Items>
</telerik:RadComboBox>
</div>
<div id="content">

</div>
<telerik:RadAjaxManager runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadComboBox1">
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
</asp:Content>

子页面代码:

<form id="form2" runat="server">
<telerik:RadScriptManager ID="RadScriptManager2" runat="server">
</telerik:RadScriptManager>
<div>

    <telerik:RadComboBox ID="RadComboBox2" Runat="server">
        <Items>
            <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem1" 
                Value="RadComboBoxItem1" />
            <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem2" 
                Value="RadComboBoxItem2" />
            <telerik:RadComboBoxItem runat="server" Text="RadComboBoxItem3" 
                Value="RadComboBoxItem3" />
        </Items>
    </telerik:RadComboBox>

</div>
<telerik:RadAjaxManager runat="server">
    <AjaxSettings>
        <telerik:AjaxSetting AjaxControlID="RadComboBox2">
        </telerik:AjaxSetting>
    </AjaxSettings>
</telerik:RadAjaxManager>
</form>

问候!

【问题讨论】:

    标签: asp.net ajax telerik


    【解决方案1】:

    ASP.NET Web 窗体支持开箱即用的母版页 - 因此您可以指定母版页,例如MasterPage.master 并在 asp:ContentPlaceHolder 块中填充子内容。这可以根据需要与 Telerik RadScriptManager 代理控件等一起使用。网上有很多信息,例如http://www.asp.net/web-forms/tutorials/master-pages/creating-a-site-wide-layout-using-master-pages-cs

    这可能无法解释您的具体问题,但没有看到项目或您为什么设置这种方式我无法评论。

    【讨论】:

    • 我在问题的两页后面添加了代码。谢谢!
    • 非常好。我确定您以这种方式加载内容一定是有原因的。仍然,您不能有条件地加载用户控件吗?无论如何,我认为您可以从从子表单中删除表单标签开始。 asp.net 网络表单不支持多个表单标签,您的母版页中会有一组
      吗?
    • 实际上内容是以这种方式在事件上加载的(不是在文档准备好的情况下),但这只是一个示例,可以帮助您了解我正在尝试做什么并减少代码大小。如果我从 ChildPage 中删除
      ,我会得到 Control 'ctl00SU' of type 'UpdatePanel' must be placed inside a form tag with runat=server
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 2013-05-23
    • 2013-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2021-07-12
    相关资源
    最近更新 更多