我需要在一个asp.net页面中共存2个服务器表单。这只能将其中一个设为visible='false'
。可见性必须通过点击某个按钮来改变,但我需要没有页面加载,我的意思是,通过Javascript或AJAX。请注意,我们讨论的是“可见”控件属性,而不是'visibility'
或'display'
样式属性!
<form id="form_add" runat="server" visible="false">
答案 0 :(得分:2)
编辑:
我认为重要的区别在于您是否需要访问面板内的项目,客户端。设置visible = false将导致面板无法呈现,因此您无法再次访问任何控件,客户端。然而,如果您设置display none,那么您将可以访问控件,因为面板已呈现。
因此,如果您想要从客户端显示和隐藏它,然后将visible设置为true并使用css隐藏它,那么当您将可见设置为 false ,表单不会在页面上呈现,因此无法在客户端访问:
<form id="form_add" ClientIDMode="Static" runat="server" visible="true" style="display:none;">
请注意,我将 ClientIDMode 设置为静态,当asp.net呈现服务器端控件时,很可能会更改控件的ID,所以我们可以设置控件ID静态,以便在客户端呈现时生成相同的ID。
另一个LINK,用于解释ClientIDMode
现在您可以从客户端切换它:
$("#form_add").show(); // show it
$("#form_add").hide(); // hide it
答案 1 :(得分:2)
我认为首先要问的重要问题是:哪里你是否正在添加其他表单?在ASP.Net Web Forms
中,“只能有一个”,而无法嵌套表单(spec)。
然后
form
吗?或者一个form
?
Button.PostBackUrl
如果您没有使用MasterPage
,那么您可以在服务器端form
之外添加另一个/多个HTML表单。它会这样,所以你不能在其中添加服务器控件(但仍然可以以裸机方式访问<input />
个字段。)
除此之外,您可以通过Javascript“注入”forms
。
答案 2 :(得分:-1)
使用JavaScript,您可以尝试使用getAttribute('visible')
来检查它是true
还是false
。
然后,您可以使用setAttribute('visible',<boolean value>)
将其设置为true
或false
。
您可以使用getAttribute
setAttribute
和document.getElementById('form_add')
像:
Var t = document.getElementById('form_add');
if(t.getAttribute('visible'))
t.setAttribute('visible', false);