本帖最后由 cnuusw 于 2010-07-26 13:54:39 编辑

解决方案 »

  1.   

    是从顶部开始执行的。但是只要你把赋值的方法写在ispostback里面,就不会重赋值了!
      

  2.   

    回调时,先走pageload,然后才走button的click事件,但是不走!IsPostback建议在声明变量的时候只写它的声明部分
    Model.TelType model;在使用的时候才为其开辟内存空间
    if (!IsPostBack)
    {
         model = new YingKe.Model.TelType();
         model = bll.GetModel_TelType(_id);
         LoadInfo();
    }
      

  3.   

     int _id = 0;  你这个,每次都会把_id变成0把!
      

  4.   


    这位朋友的意思是不是说,页面上有多少个涉及到model的按钮控件,就需要实例化多少次呢?这样也太恐怖了吧?
      

  5.   

    pageload时,model的 Model。ID =9;
    click时,变成了0,郁闷加稀奇。如果不想实例化多次,改如何处理?
      

  6.   

    看你样子 是想定义全局 变量这样定义吧 private static int id=0;
      

  7.   

    已经全放在ispostback里了,问题的核心是model的实例化,不是传递过来的requeststring【“id”】,
    关键是model不想实例化多次。
      

  8.   


    不是想定义全局变量,也不想关注id是多少,
    我想实现的是,再bll.GetModel(int id)方法中得到model里的值保存起来给其他方法使用。我要的model.ID,不是queststring["id"]。
      

  9.   

    点击按钮时,系统又从顶部开始执行,而不是直接执行btn_Submit_Click事件
    ==
    b/s应用程序中每次请求的页面都是一个新页面,所以整个页面生命周期都要走一次,换而言之,page_load必做
      

  10.   


    页面加载时page_load必做,所以id也就被赋值了,如果想用model.ID,可以考虑用Session或者Cookie保存
      

  11.   

    _id = int.Parse(Request.QueryString["ID"]);
    ==
    现在基本不用int.Parse,都是用int.TryParse方法,楼主的案例传个id值 9876543210 看看
      

  12.   

    服务器端的按钮触发事件,还会执行page_load事件的,你可以在page_load加入第一次判断就行了
      

  13.   


    if (!IsPostBack)
                {
                    model = bll.GetModel_TelType(_id);
                    Session["id"]=model.ID;
                    LoadInfo();
                }但是我不明白的是,你点按钮之后走AddInfo()也没用到model.ID
      

  14.   


    AddInfo()方法中用到了 bll.edit 方法,edit需要id,尽管requeststring 的id可以使用,但是我想了解的是我的model.id为什么没了,现在了解了,页面回调时是从最顶部开始执行的,此时因为有Model.TelType model = new YingKe.Model.TelType();
    这句代码存在,model的值被滞空了。(目前只是这么认为,还没有找到足够的证据。)session  cookie    cache  等等都可以保存,这个我明白,但是如果不这么做,就没有别的办法了吗?
      

  15.   

    你可以把Model.TelType model = new YingKe.Model.TelType();
    放到if(!ispostback)中,但是你又需要model这样一个全局的变量里的一些属性值.页面再次加载的时候,你想保留model里的属性值,如果不用session之类的方法 ,model就是空的,你就要重新捞一次_id,再跑一次bll.GetModel_TelType(_id);所以你又要把ispostback去掉就是这样,页面不会保存你想要的信息,除非你指定要保存.如果不保存,你就得自己再取一次
      

  16.   

    高歌顶~~~~单击按钮不是从那个单击事件开始执行的,而是从page_load的回发(ispostback)开始的
      

  17.   

    这个问题不算难,问题的原因是:你第一次加载页面的时候加载model,但是当你点击那个button的时候,又刷新了一下页面,此时因为你是写在if(!ispostback)里面,所以不再加载,而此时客户端中,没有一个存储空间来存储你的值,所以你取不到model的值我的解决方法是这样子的,你应该了解viewstate的用法呗,用viewstate就可以解决这个问题// 初始化后,可把model装入viewstate中
    viewstate["value"]=model;// 在你需要用的地方,在把model从viewstate中取出来
    model=(数据类型)viewstate["value"];