[英]C# field initializer error when using a hidden field variable
我是C#的新手,所以可能有一個很簡單的答案,這只是我的無知阻止了我。
我試圖從URL中提取參數值,然后將其傳遞給后面代碼中的查詢字符串。
我沒有問題獲取參數值並將其傳遞給hiddenfield(在.aspx頁上的jQuery / HTML中完成),但是當我嘗試在后面的代碼中使用它的值'URLVariable'時,我始終得到'A字段初始化程序無法引用非靜態字段,方法或屬性“ P1”錯誤
將P1設置為靜態可以使錯誤消失,但是這意味着重新加載頁面時該值不會更改,而這正是我要解決的問題。 我很確定這是我無法正確執行構造函數,但是我看不到我出了什么問題。
感謝您事先提供的幫助,下面是代碼。
public partial class SqlDat : System.Web.UI.Page
{
public string P1;
public SqlDat()
{ (new SqlDat()).P1 = URLVariable.ToString(); }
public string tb1text = "SELECT Stuff FROM Somewhere WHERE Something= "+SqlDat.P1;//+ HttpUtility.ParseQueryString(BaseUrl.Query).Get("Tim");
}
我猜你的課看起來像這樣:
public class SqlDat
{
public string P1;
public SqlDat()
{
P1 = URLVariable.ToString();
}
public string tb1text = "SELECT Stuff FROM Somewhere WHERE Something = "+SqlDat.P1;//+ HttpUtility.ParseQueryString(BaseUrl.Query).Get("Tim");
}
那行不通。 首先也是最重要的SqlDat.P1
是,因為SqlDat.P1
引用類型SqlDat
上的靜態成員,而P1
不是靜態成員,所以您要查找this.P1
或只是P1
。
如果要在初始化程序中引用其他成員,尤其是在構造函數中初始化了該成員之后 ,則需要在構造函數中進行設置:
public class SqlDat
{
public string P1 { get; set; }
public string tb1text { get; set;
public SqlDat()
{
P1 = URLVariable.ToString();
tb1text = "SELECT Stuff FROM Somewhere WHERE Something = " + P1;
}
}
然后,您也可以讓P1
和tb1text
成為屬性( { get; set; }
)。
您可能還想重新考慮您的命名,以及是否使用ORM而不是自己查詢數據庫並且不使用靜態方法( URLVariable
來自何處)來手工制作SQL字符串(了解有關SQL注入的信息)。
您試圖以靜態成員的身份訪問此字段,但不是。 相反,您需要創建一個SqlDat
對象並從那里使用P1。 簡單地:
(new SqlDat()).P1
您嘗試訪問靜態屬性,並在構造函數中創建了一個新實例。 以下更改應該起作用:
public partial class SqlDat : System.Web.UI.Page
{
public string P1;
public SqlDat()
{ P1 = URLVariable.ToString(); }
public string tb1text = "SELECT Stuff FROM Somewhere WHERE Something= "+P1;//+ HttpUtility.ParseQueryString(BaseUrl.Query).Get("Tim");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.