当我在客户端分配变量时,表达式术语“字符串”无效

时间:2013-12-12 13:21:23

标签: c# asp.net string variables syntax-error

如何在aspx页面中分配变量?

看我试过了

 <div>
      <asp:TextBox ID="UsernameTextBox" Text="xxx" runat="server"></asp:TextBox>
      <%= string ss=  UsernameTextBox.Text.ToString() %>
      <asp:Button ID="btnLogin" runat="server" 
           OnClientClick="LoginPopup( <%=  UsernameTextBox.Text  %>);  return false;"
           CssClass="login-button" Text="xxx">
      </asp:Button>
 </div>

我已在字符串

中分配了usernametextbox值
 <%= string ss =  UsernameTextBox.Text.ToString() %>

但它显示的错误如下:无效的表达式术语'字符串'

为什么我不能这样做?有可能吗?

但是,如果我删除"string ss= ",那么<%= UsernameTextBox.Text.ToString() %>工作正常。

我无法将值分配给字符串变量。为什么呢?

是.net中的错误?还是错误的语法格式?

2 个答案:

答案 0 :(得分:7)

如果必须为变量赋值,则应使用正常的脚本标记,如:

<% string ss = UsernameTextBox.Text.ToString(); %>

稍后如果要渲染该值,则可以执行以下操作:

<%= ss %>

您可能会看到:Embedded Code and Inline Server Tags

答案 1 :(得分:0)

除了非常优雅的Spaghetti代码之外,您的逻辑也存在缺陷,您将始终获得初始文本框值,而不是点击时的当前值。

要一次性杀死两只鸟并拥有更好的代码风格和工作代码,首先将标记更改为:

<asp:Button ID="btnLogin" runat="server" OnClientClick="return LoginPopup();" CssClass="login-button" Text="xxx"></asp:Button>

现在在你的JS函数中有这个:

function LoginPopup() {
    var name = document.getElementById("<%=UsernameTextBox.ClientID%>").value;
    //...code using the name here...
    return false;
}

您现在点击时会读取该值。