0

我对 C# 很陌生,所以可能有一个非常简单的答案,只是我的菜鸟阻止了我。

我正在尝试从 URL 中提取参数值,然后将其传递给后面代码中的查询字符串。

我可以毫无问题地获取参数值并将其传递给隐藏字段(这是在 .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");

}
4

3 回答 3

1

我猜你的课是这样的:

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不是,所以你正在寻找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;
    }
}

然后你也可以 letP1tb1textbe 属性 ( { get; set; })。

您可能还想重新考虑您的命名,以及是否手动制作 SQL 字符串(阅读有关 SQL 注入),使用 ORM 而不是自己查询数据库而不使用静态(URLVariable从哪里来?)。

于 2015-04-23T11:08:16.307 回答
0

您正在尝试将此字段作为静态成员访问,但事实并非如此。相反,您需要SqlDat从那里创建一个对象并使用 P1 。简单地说:

(new SqlDat()).P1
于 2015-04-23T11:02:16.663 回答
0

您尝试访问静态属性,并且在构造函数中创建了一个新实例。以下更改应该有效:

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");

}
于 2015-04-23T11:15:45.053 回答