我对C#非常陌生,所以对此可能只是一个非常简单的答案,只是我的noobness阻止我得到它。
我尝试从网址中提取参数值,然后将其传递给后面代码中的查询字符串。
获取参数值并将其传递给隐藏字段(在.aspx页面上以jQuery / HTML格式完成),我没有问题,但是当我尝试使用它时#s; s价值' URLVariable'在我不断得到的代码中,字段初始化程序无法引用非静态字段,方法或属性' 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");
}
答案 0 :(得分: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;
}
}
然后您也可以将P1
和tb1text
作为属性({ get; set; }
)。
您也可能想重新考虑您的命名,以及是否手动创建SQL字符串(阅读SQL注入),使用ORM而不是自己查询数据库而不使用静态(URLVariable
来自何处? )。
答案 1 :(得分:0)
您尝试将此字段作为静态成员访问,而不是。相反,您需要创建SqlDat
的对象并从那里使用P1。简单地:
(new SqlDat()).P1
答案 2 :(得分: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");
}