在客户端分配变量时表达式术语'string'无效



如何在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>

我已在字符串中分配用户名文本框值

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

但它显示的错误类似于:无效的表达式术语"字符串"

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

但如果我去掉"string ss= ",那么<%= UsernameTextBox.Text.ToString() %>工作得很好。

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

.net里有虫子吗?或者任何错误的语法格式?

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

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

稍后,如果您想呈现该值,则可以执行以下操作:

<%= ss %>

您可以看到:嵌入式代码和内联服务器标签

除了不是很优雅的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;
}

现在单击时已读取值。

最新更新