2016-01-06 104 views
-3

我试图将数据从数据传递者传递到全局变量,但出于某种奇怪的原因,当我做一个警报以显示它显示为空白的值时。我只是没有正确传递?将数据传递者值传递给全局字符串c#

 using (SqlConnection connection = new SqlConnection(SQL)) 
     { 
     connection.Open(); 

     using (SqlCommand command = new SqlCommand("SELECT TOP 1 Number FROM TestTable.dbo.users WHERE LoginName ='" + viewerUserNameTxtBox.Text + "'", connection)) 
     using (SqlDataReader reader = command.ExecuteReader()) 
      { 
      while (reader.Read()) 
       { 
        string test = reader.GetString(0); 
        viewerNumber = test; 
       } 
      } 
     } 

所以我有一个全局变量:

public partial class _Default : System.Web.UI.Page 
{ 

/* Global Variables Start */ 
string viewerNumber = ""; 

这是我如何显示警报:

 protected void variableCheck_Click(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + viewerNumber + "');", true); 

} 
+0

你正在分配它就好了,这就是'variable = assignment'的作用。设置断点,逐步执行代码并检查实际执行的任务。此外,请阅读[问]并显示所有相关代码,即您拨打以上代码的位置以及如何显示警报。它也不是一个全球变量,仅供参考。 – CodeCaster

+2

这段代码很疯狂 - 容易受到SQL注入攻击。它实际上是乞求被黑客攻击。 –

+0

您如何显示警报?发布该代码以及。 – Rahul

回答

2

一个全局变量。这是一个类级别的变量。请记住,每次回发都使用页面类的新实例。每次调用新的服务器事件时,这都是新的回发,页面类的新实例以及整个页面生命周期(包括Page_Load和朋友)的完整运行。

对于网站,您应该将此数据放入会话中。你也应该解决这个可怕可怕的SQL注入的问题:

using (var connection = new SqlConnection(SQL)) 
using (var command = new SqlCommand("SELECT TOP 1 Number FROM TestTable.dbo.users WHERE LoginName = @UserName;", connection)) 
{ 
    command.Parameters.Add("@UserName", SqlDbType.VarChar, 25).Value = viewerUserNameTxtBox.Text 
    connection.Open(); 

    using (SqlDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      string test = reader.GetString(0); 
      Session["viewerNumber"] = test; 
     } 
    } 
} 
+0

谢谢!我将修复SQL注入问题,而不是懒惰,这是一个内部网站,所以我不害怕它,但我不应该懒惰! –

0

另外,如果您的信息没有显示出来,你实际上可以编写自己的方法处理JavaScript警告这样..另一种选择,以通过将ScriptManager的

public static void ShowClientMessageDlg(string msg, string aValue, string redirect = "") 
{ 
    string msgFormat; 
    msgFormat = string.Format(" {0}", aValue); 
    msg = msg + msgFormat; 
    HttpContext.Current.Response.Write("<script type='text/javascript'>alert('" + msg + "');</script>"); 
}