2016-01-06 103 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>"); 
}