在asp标签中使用嵌入式代码启用和禁用asp验证器不起作用,写入值但仍然启用控制。请检查
的出现情况Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>"
以这种形式:
<form id="frmValidator" runat="server">
<div>
<asp:ValidationSummary
ID="Summary"
runat="server"
HeaderText="Error(s):"
CssClass="msg-error" />
<asp:TextBox ID="txtText" runat="server" MaxLength="15" Enabled="false" />
<asp:RequiredFieldValidator
ID="rfvtxtText"
runat="server"
ControlToValidate="txtText"
ErrorMessage="Requiered."
Display="None"
ClientValidationFunction=""
SetFocusOnError="true"
Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />
<asp:RegularExpressionValidator
ID="revtxtText"
runat="server"
ControlToValidate="txtText"
Display="None"
ErrorMessage="Invalid."
ValidationExpression="[a-zA-ZñÑáéíóúÁÉÍÓÚ ,.*]{3,50}"
SetFocusOnError="true"
Enabled="<%# Convert.ToBoolean(txtText.Enabled) ? false : true%>" />
<asp:Button
ID="btnSave"
runat="server"
Text="Save" />
</div>
<form>
答案 0 :(得分:1)
答案是你不能。
<%# %>
是Data Binding Expression Syntax。没有ServerControl就不能使用它,例如GridView,ListView。
通常,我们从后面的代码中禁用/启用控制。
另一种方法是使用Javascript禁用验证。但是,您需要重定向到不同的页面或在单击按钮后执行某些操作。否则,验证消息将在回发后显示给用户。
<script type="text/javascript">
if (document.getElementById('<%= txtText.ClientID %>').getAttribute('disabled') === 'disabled') {
alert('disabled');
ValidatorEnable(document.getElementById('<%= rfvtxtText.ClientID %>'), false);
ValidatorEnable(document.getElementById('<%= revtxtText.ClientID %>'), false);
}
</script>
答案 1 :(得分:0)
在我看来,它应该是可能的。虽然我自己仍然是一个新手,但我总是忘记哪个代码块会做什么。我试试<%: --expression-- %>
。对this问题的第二个答案做了很好的总结。