Lea*_*ing 0 c# asp.net webforms
我有一个简单的asp.net webform页面,我用它来显示基于pageID的页面相关数据.
我正在尝试定义页面级变量,以便我可以访问此页面中使用的不同函数中的变量.但我收到的错误很少.例如,如果我的代码是
public partial class PageHome : System.Web.UI.Page
{
int _LangID = 1;
_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
int _PageID = 0;
int _PID = Helper.GetPageID(_LangID, "Home.aspx");
protected void Page_Load(object sender, EventArgs e)
{
int _LanguageID = _LangID;
GetPageDetails(_PageID);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我明白了
Error message:
Invalid token '=' in class, struct, or interface member declaration (_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));)
Invalid token '.' in class, struct, or interface member declaration (_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));)
Method must have a return type
Identifier expected
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用在构造函数中定义这些变量
//public PageHome()
//{
//int _LangID = 1;
//_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
//int _PageID = 0;
//int _PID = Helper.GetPageID(_LangID, "Home.aspx");
//}
Run Code Online (Sandbox Code Playgroud)
然后我得到不同的错误
The name '_LangID' does not exist in the current context
The name '_PageID ' does not exist in the current context
定义一次定义的页面级变量和在不同函数中访问的最佳方法是什么
更新:
Helper.GetAppSetting("LangID_En")和Helper.GetPageID(_LangID, "Home.aspx")函数在保存在的单独的类文件中定义App_Code/Helper/Helper.cs
更新二:根据JonSKeet答案工作代码.
public partial class PageHome : System.Web.UI.Page
{
int _LangID = 1;
_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
int _PageID = 0;
public PageHome()
{
int _PID = Helper.GetPageID(_LangID, "Home.aspx");
}
protected void Page_Load(object sender, EventArgs e)
{
int _LanguageID = _LangID;
GetPageDetails(_PageID);
}
}
Run Code Online (Sandbox Code Playgroud)
你不能只有一个声明:
_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
Run Code Online (Sandbox Code Playgroud)
在一个类声明中.它必须在方法,构造函数或类似的东西中.
但是,鉴于您刚刚声明了变量,您可以简单地更改这两行:
int _LangID = 1;
_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
Run Code Online (Sandbox Code Playgroud)
......一个:
int _LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
Run Code Online (Sandbox Code Playgroud)
但是,你会在这里遇到错误:
int _PID = Helper.GetPageID(_LangID, "Home.aspx");
Run Code Online (Sandbox Code Playgroud)
因为你不能在初始化器中引用另一个实例字段.初始化必须在构造函数中发生...在这种情况下,为了清楚起见,我建议在构造函数中执行这两个操作:
public class PageHome : Page
{
// Do you really not need to initialize this to something else?
int _PageID = 0;
int _LangID;
int _PID;
public PageHome()
{
_LangID = int.Parse(Helper.GetAppSetting("LangID_En"));
_PID = Helper.GetPageID(_LangID, "Home.aspx");
}
...
}
Run Code Online (Sandbox Code Playgroud)
另一方面,这些值是否实际上基于每页实例更改?也许它们实际上应该是静态场?(这里的大局很难说清楚.)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |