使用隐藏的字段变量时C#字段初始化错误

藻类

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

}
CodeCaster

我猜你的班级看起来像这样:

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;
    }
}

然后,您也可以将P1tb1text设为属性({ get; set; })。

您可能还想重新考虑您的命名,以及是否要使用ORM而不是自己查询数据库而不使用静态方法(这是URLVariable从哪里来的)来手工制作SQL字符串(了解有关SQL注入的信息)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章