【问题标题】:Include form tag only in master page if content page not contains <form> tag?如果内容页面不包含 <form> 标签,则仅在母版页中包含表单标签?
【发布时间】:2020-10-06 05:16:32
【问题描述】:

我在需要&lt;Form&gt; 标签的母版页中使用&lt;asp:ScriptManager&gt;link,但问题是我已经在所有子内容页面中包含&lt;form&gt; 标签。

我知道我只需要在母版页中包含 &lt;form&gt; 标记并从所有子页中删除,但不幸的是这是不可能的,因为有太多内容子页连接到此母版页以及每个子页 &lt;form&gt;标签包含不同的类,如horizental inline 等。

所以我只想在内容/子页面中不存在 form 标签时,我只想在母版页中包含 &lt;form&gt; 标签。

如果我在 master 和 child/content 中都使用,它的显示错误,它必须是 1 个表单标签。

母版页

<form id="Form2" runat="server" novalidate="" role="form" runat="server" class="form-horizontal">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
    <h3>Session Idle:&nbsp;<span id="secondsIdle"></span>&nbsp;seconds.</h3>
    <asp:LinkButton ID="lnkFake" runat="server" />
    <cc1:modalpopupextender id="mpeTimeout" behaviorid="mpeTimeout"
        runat="server" popupcontrolid="pnlPopup" targetcontrolid="lnkFake"
        okcontrolid="btnYes" cancelcontrolid="btnNo"
        backgroundcssclass="modalBackground" onokscript="ResetSession()">
     </cc1:modalpopupextender>

    <asp:Panel ID="pnlPopup" runat="server" CssClass="modalPopup" Style="display: none">
        <div class="header">
            Session Expiring!
        </div>
        <div class="body">
            Your Session will expire in&nbsp;<span id="seconds"></span>&nbsp;seconds.<br />
            Do you want to reset?
        </div>
        <div class="footer" align="right">
            <asp:Button ID="btnYes" runat="server" Text="Yes" CssClass="yes" />
            <asp:Button ID="btnNo" runat="server" Text="No" CssClass="no" />
        </div>
    </asp:Panel>

    <asp:ContentPlaceHolder ID="body" runat="server">
    </asp:ContentPlaceHolder>
</form>

我只想在子页面中使用form 标签。我该如何解决这种情况,

谢谢,

【问题讨论】:

    标签: c# asp.net forms master-pages


    【解决方案1】:

    据我所知,ASP.NETWebForms 不支持具有runat="server" 属性的多个form 元素。因此,没有办法解决这个问题,因为它是硬编码到项目中的。

    无论如何,如果假设有一千个子页面也有form元素和runat="server"属性,而你懒得一一替换,然后您可以使用Visual Studio 的文本替换功能并将form 元素更改为div 元素。为此,您只需要按Ctrl + H,这将在右上角打开一个小窗口,询问您要替换的文本以及您想要替换的另一个文本。见:

    请注意,在我分享的屏幕截图中,我正在从下拉菜单中选择 Current Project。这将在项目中搜索并替换每个文本为&lt;form&lt;div

    一旦它将所有以&lt;form 开头的标签替换为&lt;div,您就可以通过将&lt;/form 替换为&lt;/div 来修改form 标签的结束文本。现在你只剩下一页了。

    现在,只剩下MasterPage,您可以将div 替换回form。因此,这种方式您只需手动更改一页。

    您需要单击将替换所有值的第二个按钮。您也可以使用其他选项来处理查找和替换。但是,不幸的是,您不能有多个带有runat="server" 属性的form 标签。

    PS
    它不会对您拥有的设计造成问题,并且 horizontal inline 等类将应用于 divs 而不是 forms 并将呈现与在 UI 上呈现的 forms 相同。

    在批量修改内容或更改重要且可能导致大量混乱的内容之前,先发送backup 始终是一个好方法。

    【讨论】:

      猜你喜欢
      • 2014-02-02
      • 2015-06-28
      • 2021-12-24
      • 2013-03-19
      • 2013-12-29
      • 2015-08-07
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多