我目前正试图弄清楚我的代码有什么问题:
if(...){
...
}else{
someVariableAsString = "myValue123";
MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);
}
if(...){
...
}else{
//someVariableAsString = "myValue123";
MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);
}
..为什么和任何解决方案?
答案 0 :(得分:1)
因为您试图对INIT而不是加载进行操作,所以尚未在服务器上附加数据。
您应该在ASP.NET中找到对Web请求生命周期的回顾:MSDN ASP.NET Page Life Cycle
以下是相关摘录:
初始化
During page initialization, controls on the page are available and
每个控件的UniqueID属性是 组。主页和主题也是 如果适用,应用于该页面。如果 当前的请求是回发, 回发数据尚未加载 和控制属性值没有 已从视图恢复为值 状态。
Load During load, if the current request is a postback, control
属性加载了信息 从视图状态和控制中恢复 状态。
将您尝试执行的代码移入(或之后)页面加载处理程序(记得测试IsPostBack)并查看是否达不到您想要的效果。
尝试新功能:
尝试将您的工作改为:
if(...){
...
}else{
string someVariableAsString = "myValue123";
MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);
}
答案 1 :(得分:0)
听起来someVariableAsString可能会抛出异常导致代码无法到达下一行。检查你的变量类型。
答案 2 :(得分:0)
我能够解决我的案子:
我将someVariableAsString
更改为视图属性
为Gobal.asax创建了一个会话变量,现在我得到了正确的结果(稍后加载一页)。 :-)
但在我的情况下,这样做。
问题解决了。
onInit{ m_myVariable; myFunction(); ... } void myFunction(){ // if clause described up } public View myVariable { get { return m_myVariable = Session["myVariableAtSession"] as View; } set { m_myVariable = value; Session["myVariableAtSession"] = m_myVariable; } }