0

我目前正在尝试找出我的代码有什么问题:

不工作

if(...){  
    ...  
}else{  
    someVariableAsString = "myValue123";  
    MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);  
}

作品

if(...){  
    ...  
}else{  
    //someVariableAsString = "myValue123";  
    MultiView1.SetActiveView(My3thView_ID_In_MultiViewControl);  
}

..为什么以及任何解决方案?

4

3 回答 3

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);  
}
于 2011-04-18T18:49:30.390 回答
0

我能够为我的案例找到解决方案:
我将someVariableAsString属性更改为视图。
为 Gobal.asax 创建了一个会话变量,现在我得到了正确的结果(稍后加载一页)。:-)

但在我的情况下,这会做。

问题解决了。

初始化{  
m_my变量;  
我的函数();  
...
}  

无效我的功能(){   
// if 子句描述  
}  

公共查看我的变量  
{  
get { return m_myVariable = Session["myVariableAtSession"] as View; }  
设置 { m_myVariable = 值;  
 会话["myVariableAtSession"] = m_myVariable;  
 }  
}
于 2011-04-19T11:48:40.280 回答
0

听起来 someVariableAsString 可能会引发异常以导致代码无法到达下一行。检查您的变量类型。

于 2011-04-18T18:00:52.640 回答