如果内容页不包含 <form> 标签,仅在母版页中包含表单标签?

Include form tag only in master page if content page not contains <form> tag?

我在需要 <Form> 标签的母版页中使用 <asp:ScriptManager>link,但问题是我已经在所有子内容中包含了 <form> 标签页数。

我知道我只需要在母版页中包含 <form> 标签并从所有子页中删除但不幸的是这是不可能的,因为有太多的内容子页连接到这个母版页而且每个子 <form> 标签包含不同的 类 像 horizental inline

所以我只想在 content/child 页面中不存在 form 标签时只在母版页中包含 <form> 标签。

如果我同时在 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 标签。我该如何解决这种情况,

谢谢,

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

总之,假设有一千个子页面也有 form 元素和 runat="server" 属性,而你懒得全部替换一个接一个,然后你可以使用Visual Studio的文本替换功能并且可以将form元素更改为div元素。为此,您只需要按 Ctrl + H 这将在右上角打开一个 window 询问您要替换的文本和您想要的另一个文本那个。参见:

注意我分享的截图,我从下拉菜单中选择当前项目。这将搜索并替换项目中 <form<div 的每个文本。

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

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

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

PS
它不会对您的设计造成问题,类 例如 horizontal inline 将应用于那些 divs 而不是 forms 并且将呈现与 forms 在 UI.

上呈现

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