问题描述
我在母版页中使用<asp:ScriptManager>
和link
,它们需要<Form>
标签,但是这里的问题是我已经在所有子内容页面中包含了<form>
标签。
我知道我只需要在母版页中添加<form>
标记并将其从所有子页中删除,但是不幸的是,这是不可能的,因为有太多内容子页连接到该母版页,并且每个子页{ {1}}标签包含<form>
horizental
等不同的类。
因此,我只希望如果内容/子页面中不存在inline
标签,则仅在母版页中包含<form>
标签。
如果我同时在母版和子/内容中使用它,则显示错误,必须是1个表单标签。
母版页
form
仅当不在子页面中时,我只想使用<form id="Form2" runat="server" novalidate="" role="form" runat="server" class="form-horizontal">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<h3>Session Idle: <span id="secondsIdle"></span> 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 <span id="seconds"></span> 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>
标签。我该如何解决这种情况,
谢谢
解决方法
据我所知,ASP.NET
WebForms
不支持具有form
属性的多个runat="server"
元素。因此,对此没有任何解决方法,因为它已硬编码到项目中。
无论如何,如果假设有一千个子页面也具有form
属性的runat="server"
元素,而您又懒得一一替换所有子页面,然后,您可以使用Visual Studio
的文本替换功能,并将form
元素更改为div
元素。为此,您只需要按Ctrl
+ H
,这将在右上角打开一个小窗口,询问您要替换的文本以及您要替换的其他文本。参见:
我共享的屏幕快照中的通知,我从下拉菜单中选择当前项目。这将在项目中用<form
至<div
搜索并替换每个文本。
一旦将所有以<form
开头的标签替换为<div
,则可以通过将form
替换为{{1 }}。现在您只剩下一页了。
现在,只剩下</form
了,您可以将</div
替换回MasterPage
。因此,通过这种方式,您只需手动更改一页。
您需要单击第二个按钮,它将替换所有值。您还可以使用其他选项来处理查找和替换。但是,不幸的是,您不能在上面带有div
属性的多个form
标签。
PS
它不会对您拥有的设计造成问题,并且form
之类的类将应用于runat="server"
而不是horizontal inline
,并且将与divs
相同在用户界面上呈现。
在大量修改或更改至关重要的内容之前,采取forms
总是一种好方法。