1

我在母版页下的页面中使用 Ajax。我对脚本管理器的位置有疑问。我不希望脚本管理器适用于所有页面,只适用于一个页面。

这是母版页:

         <div>

                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

                </asp:ContentPlaceHolder>

            </div>

这是我要添加脚本管理器的页面

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
   <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:TextBox ID="TextBox1" runat="server" Width="120"></asp:TextBox>
    <asp:NumericUpDownExtender
        ID="NumericUpDownExtender1" runat="server" TargetControlID="TextBox1" Maximum="9" Minimum="1" Width="120">
    </asp:NumericUpDownExtender>
</asp:Content>

当我运行它时,会出现这个问题:“必须将类型为'ScriptManager'的控件'ContentPlaceHolder1_ScriptManager1'放在带有runat = server的表单标签内。”

所以我在互联网上读到我必须将母版页中的内容放在这样的表单标签内:

          <div>
            <form id="form1" runat="server" style="height: 25px">
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">

                </asp:ContentPlaceHolder>
                </form>
            </div>

但是当我这样做时,会出现另一个问题:“一个页面只能有一个服务器端表单标签。”

我不知道该怎么办,谢谢你的帮助

4

4 回答 4

0

在 Asp.net 中,不允许有更多的表单标签。您只有一个包含所有内容的大表单,而不是拥有许多表单。

在大师:

<body>
  <form id="form1" runat=server>

   <asp:ContentPlaceHolder runat="server" ID="MainContent" />

   </form>
</body>

在 ContentPlaceHolder 中:

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
    'your code here'
</asp:Content>

在所有文件中使用搜索来检查您是否有多个表单标签。

于 2013-04-05T08:42:41.543 回答
0

问题是因为我在此页面中有另一个表格。但不是表单中的表单,为什么我的母版页中不能有多个表单?

于 2013-04-05T09:26:29.323 回答
0

网站母版页:

   <form runat="server">
             <asp:ScriptManager runat="server">
                 <Scripts>
                  
                     <asp:ScriptReference Name="jquery" />
                     <asp:ScriptReference Name="jquery" Path="~/Scripts/jquery-3.4.1.js" />
                   <asp:ScriptReference Name="jquery" Path="~/Scripts/jquery-3.4.1.min.js" />
                  <asp:ScriptReference  Path="~/Scripts/YourScript.js" />
</Scripts>
</asp:ScriptManager>
            <div>
                <ul class="nav">
                    <li><a runat="server" id="about" href="~/About">About</a></li>
                </ul>
            </div>

<asp:ContentPlaceHolder ID="MainContent" runat="server"> </asp:ContentPlaceHolder>

这些是 Aspx 页面代码:

<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<div runat=server id=subMenus></div>
</asp:Content>

和 JS 文件:

$('#about').click(function (e) {

        e.preventDefault();
        $('#MainContent_subMenus').load('let.aspx');
        
    });

所以 jquery '加载'一个 ajax 调用。这个函数通过 <asp:Content ID="BodyContent" 到id=subMenus div的 aspx 文件给出

PS:

注意 ID 母版页几乎在每个元素之前都给出了“MainContent_”标签。

这个对我有用。我希望这对你有帮助。

于 2022-01-12T13:49:40.307 回答
-1

把你的script manager里面contentplace holder

于 2013-04-05T08:45:41.850 回答