首页 新闻 会员 周边 捐助

ASP.NET回调问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-10-26 11:33

后台页面代码

 protected int[] result = new int[14];

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                result = RunContext.Instance.FaultsCount();
              }
         }

前台代码

<ul>
<li>正常站点:<%=result[8] %></li>

</ul>

<asp:Button ID="btn" runat="server" Text="单击" onclick="btn_Click" />

 

现象是第一次加载正常显示,点击按钮后回调result数据里的值没有了,因为是第二次加载,result初始化的代码不执行了

 

请问下这种问题怎么解决

越天的主页 越天 | 初学一级 | 园豆:8
提问于:2012-10-26 09:22
< >
分享
最佳答案
0

第一次,走了这个代码:

if (!IsPostBack)
            {
                result = RunContext.Instance.FaultsCount();
              }

当你点击button的时候,回调不走上面的代码,而且你的那个result 是实例的,也就是每次页面刷新都是新的。
这样,你可以用静态的保存,这样所有的人都可以访问这个界面都可以用到这个。
或者用session,viewstate 来保存
收获园豆:10
chenping2008 | 大侠五级 |园豆:9836 | 2012-10-26 09:40
if (!IsPostBack)
            {
                result = RunContext.Instance.FaultsCount();
                 ViewState["result"] = result;
              }

改成这样结果一样不显示,请问下是怎么回事?

越天 | 园豆:8 (初学一级) | 2012-10-26 10:04

@越天: 

你viewstate放在if里面,button点击的时候,不走if, 你的的那个result实例化了一个新的,没有任何的值,所以你怎么会有值显示呢?  你这个时候需要在button中把你的viewstate的值放到result中去,这样才行。

chenping2008 | 园豆:9836 (大侠五级) | 2012-10-26 11:11
其他回答(2)
0

放if外面,你这没用服务器控件显示result,不会保存到ViewState里,因此每次Page_Load都要去重新取。

收获园豆:10
向往-SONG | 园豆:4853 (老鸟四级) | 2012-10-26 09:33
0

楼上是一种办法 还有种就是把 

result = RunContext.Instance.FaultsCount(); 放到btn_click时间里面也是可以的
sym_cn | 园豆:798 (小虾三级) | 2012-10-26 09:53

抱歉 本意是减少这个代码的执行

支持(0) 反对(0) 越天 | 园豆:8 (初学一级) | 2012-10-26 10:11

@越天: 

if (!IsPostBack)
            {
                result = RunContext.Instance.FaultsCount();
                 ViewState["result"] = result;
              } 
这句是页面第一次加载的时候才会调用
在走onclick事件的时候 不会再走if(!ispostback)哦
因此说在执行次数上并没有增加。
支持(0) 反对(0) sym_cn | 园豆:798 (小虾三级) | 2012-10-26 10:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册