我是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
不是,所以您在寻找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注入的信息)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句