我有一个CustomValidator和一个RegularExpressionValidator,它们在后面的代码中设置了可见性。我想这样做,以便当页面不是回发时,控件不会在html文档中保留任何空格
注意:我已经尝试使用控件的动态显示设置,但这对我不起作用,因为它强制显示内联样式:内联会破坏我的布局
但是,这种情况适用于我在页面中使用的requirefieldvalidator。
以下是控件及其验证器的示例:
<dl class="accordion" data-accordion="">
<dd>
<a href="#PanelProductPricing">Product Pricing and Inventory</a>
<div id="PanelProductPricing" class="content active">
<fieldset>
<div class="row">
<%-- SALE PRICE ------------------------------------------%>
<div class="medium-4 small-12 columns">
<label>
Sale Price
<input id="tbPriceSale" type="text" placeholder="Sale Price" runat="server" />
<asp:CustomValidator runat="server" ID="cvPriceSale" ControlToValidate="tbPriceSale" EnableClientScript="true" Text="Please enter a sale price"
CssClass="error" ValidationGroup="AddProduct"
OnServerValidate="cvPriceSale_ServerValidate" />
<asp:RegularExpressionValidator ID="RegularExpressionValidator3" runat="server" ControlToValidate="tbPriceSale" Text="Invalid value for sale price"
ValidationExpression="^\$(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$" ValidationGroup="AddProduct" CssClass="error" />
</label>
</div>
</div>
</fieldset>
</div>
</dd>
</dl>
因此,在页面加载事件中,我有以下内容:
If Not Page.IsPostBack Then
rexvPriceSale.Visible = False
cvPriceSale.Visible = False
ElseIf Page.IsPostBack = True Then
rexvPriceSale.Visible = True
cvPriceSale.Visible = True
End If
以下是为输出HTML中的验证器控件呈现的内容:
<span id="dnn_ctr2601_AddProduct_cvPriceSale" class="error" style="visibility:hidden;">Please enter a sale price</span>
<span id="dnn_ctr2601_AddProduct_rexvPriceSale" class="error" style="visibility:hidden;">Invalidvalue for sale price</span>
如您所见,以下样式添加到控件样式=“visibility:hidden;”并且控件不可见,但它确实占据了屏幕中的“空格”。
我无法弄清楚这种风格的来源
我尝试从回发中删除visibility = true并将其标记为false,但无论我做什么,控件都会以完全相同的方式呈现。
有人可以帮我弄清楚为什么验证器具有可见性渲染:隐藏无论我如何在服务器端代码中设置其可见性。
答案 0 :(得分:0)
尝试将asp:PlaceHolder放在它们周围,并设置其可见性。