簡體   English   中英

使用隱藏的字段變量時C#字段初始化錯誤

[英]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;
    }
}

然后,您也可以讓P1tb1text成為屬性( { 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM