【发布时间】:2011-09-07 15:18:08
【问题描述】:
我的设置如下。呈现页面时会引发此错误:The name 'UserName' does not exist in the current context。我不明白为什么,因为我的控制权就在通话之上。我在单独的控件中有相同的设置,它工作得很好。谁能解释一下?
<asp:TextBox ID="UserName" runat="server" Width="136px"></asp:TextBox>
<asp:CustomValidator ID="cvUserNameOrEmailRequired" ValidationGroup="LoginForm"
runat="server" CssClass="input-error" ErrorMessage="Username is required"
ControlToValidate="UserName" Display="Dynamic"
ClientValidationFunction="UsernameValidateTextBox" ValidateEmptyText="True">
</asp:CustomValidator>
<script type="text/javascript">
function UsernameValidateTextBox(source, arguments) {
if (arguments.Value % 2 == 0) {
arguments.IsValid = false;
} else {
arguments.IsValid = true;
}
}
**//ERROR IS THROWN HERE**
$("#<%=UserName.ClientID %>").focus(function () {
$("#<%=cvUserNameOrEmailRequired.ClientID %>").css({ visibility: "hidden" });
});
</script>
更新
如果我删除此调用:$("#<%=UserName.ClientID %>").focus(function () {,那么<%=cvUserNameOrEmailRequired.ClientID %> 会出现同样的错误
上面的代码在<asp:Login> 标记内,将它放在外面可以消除错误。
更新
我将 jQuery 代码移到了 <asp:Login> 之外,错误就消失了。我用过:
$('#<%=LoginForm.FindControl("UserName").ClientID%>').focus(function () {
$('#<%=LoginForm.FindControl("cvUserNameOrEmailRequired").ClientID%>')
.css({ visibility: "hidden" });
});
没有问题。但是为什么它在<asp:Login> 标签中不起作用呢?
【问题讨论】:
-
在进行这样的内联插入时,我偶尔会遇到空白问题。我发现 ASP.NET 不能容忍不正确的空格,老实说我不知道官方/正确的格式。尝试向
-
@Matt,感谢您的建议,但它似乎没有用......
-
您使用的是 .net 4.0 吗?如果是这样,您可以在 UserName 文本框上使用 ClientIDMode="Static",而不必担心 .net 会更改 id。它只是“用户名”
-
这似乎也没有。
-
我将您的代码复制到我的 ASP 应用程序中,并且没有波浪线。我什至在网上查了一下,文本框显示得很好。我知道这听起来很奇怪,但是尝试复制您粘贴在此页面上的代码,然后将其复制到您在 ASP 应用程序中的代码上。它以前对我有用。
标签: javascript asp.net