我通常会创建用户控件,其中包含用于添加和编辑数据库中特定表的数据的表单。然后,当用户单击“编辑”按钮等时,我会显示或隐藏这些控件。通常的做法(对我来说)将属性放在代码隐藏中,用于将正在编辑的项目的ID设置为隐藏页面上的标签,当然,对于要插入的新项目,将其留空。我通常只使用C#,但是,这次我必须使用VB.NET。
所以在C#中我会做以下事情:
public static int EditID
{
get
{
return Convert.ToInt32(lblEditID.Text);
}
set
{
lblEditID.Text = value;
}
}
..然后当用户点击gridview中的“编辑”链接时,我会
//set the ID of the corresponding record, something like this:
MyUserControl.EditID = MyGridView.SelectedDataKey[0];
冷却。所以现在我需要在VB.NET中执行此操作,这是我的代码:
Public Shared Property EditID As Integer
Get
Return Convert.ToInt32(lblEditID.Text)
End Get
Set(value As Integer)
lblEditID.Text = value
End Set
End Property
但是我收到一个语法错误,上面写着:“无法在没有类的显式实例的情况下从共享方法或共享成员初始化程序中引用类的实例成员。”,突出显示getter和setter都是lblEditID
。
我找不到任何其他有关此问题的问题,而且谷歌只考虑了我能想到的关键词的每一个排列,所以这一定是非常愚蠢的。
我在这里做错了什么?
编辑:是的我知道我可以使用Session变量而不是标签,但我仍然想知道为什么这不起作用以及我如何使用标签。
答案 0 :(得分:1)
您不需要Shared
属性。 lblEditID
是存在于WebForm类实例中的标签: - 在创建此类的实例之前它不能存在,因此错误。
我真的不明白C#是如何工作的,因为它应该是相同的,但我不是C#专家。
如果您删除共享关键字,它将按您的意愿工作