回调时,先走pageload,然后才走button的click事件,但是不走!IsPostback建议在声明变量的时候只写它的声明部分 Model.TelType model;在使用的时候才为其开辟内存空间 if (!IsPostBack) { model = new YingKe.Model.TelType(); model = bll.GetModel_TelType(_id); LoadInfo(); }
if (!IsPostBack) { model = bll.GetModel_TelType(_id); Session["id"]=model.ID; LoadInfo(); }但是我不明白的是,你点按钮之后走AddInfo()也没用到model.ID
AddInfo()方法中用到了 bll.edit 方法,edit需要id,尽管requeststring 的id可以使用,但是我想了解的是我的model.id为什么没了,现在了解了,页面回调时是从最顶部开始执行的,此时因为有Model.TelType model = new YingKe.Model.TelType(); 这句代码存在,model的值被滞空了。(目前只是这么认为,还没有找到足够的证据。)session cookie cache 等等都可以保存,这个我明白,但是如果不这么做,就没有别的办法了吗?
你可以把Model.TelType model = new YingKe.Model.TelType(); 放到if(!ispostback)中,但是你又需要model这样一个全局的变量里的一些属性值.页面再次加载的时候,你想保留model里的属性值,如果不用session之类的方法 ,model就是空的,你就要重新捞一次_id,再跑一次bll.GetModel_TelType(_id);所以你又要把ispostback去掉就是这样,页面不会保存你想要的信息,除非你指定要保存.如果不保存,你就得自己再取一次
Model.TelType model;在使用的时候才为其开辟内存空间
if (!IsPostBack)
{
model = new YingKe.Model.TelType();
model = bll.GetModel_TelType(_id);
LoadInfo();
}
这位朋友的意思是不是说,页面上有多少个涉及到model的按钮控件,就需要实例化多少次呢?这样也太恐怖了吧?
click时,变成了0,郁闷加稀奇。如果不想实例化多次,改如何处理?
关键是model不想实例化多次。
不是想定义全局变量,也不想关注id是多少,
我想实现的是,再bll.GetModel(int id)方法中得到model里的值保存起来给其他方法使用。我要的model.ID,不是queststring["id"]。
==
b/s应用程序中每次请求的页面都是一个新页面,所以整个页面生命周期都要走一次,换而言之,page_load必做
页面加载时page_load必做,所以id也就被赋值了,如果想用model.ID,可以考虑用Session或者Cookie保存
==
现在基本不用int.Parse,都是用int.TryParse方法,楼主的案例传个id值 9876543210 看看
if (!IsPostBack)
{
model = bll.GetModel_TelType(_id);
Session["id"]=model.ID;
LoadInfo();
}但是我不明白的是,你点按钮之后走AddInfo()也没用到model.ID
AddInfo()方法中用到了 bll.edit 方法,edit需要id,尽管requeststring 的id可以使用,但是我想了解的是我的model.id为什么没了,现在了解了,页面回调时是从最顶部开始执行的,此时因为有Model.TelType model = new YingKe.Model.TelType();
这句代码存在,model的值被滞空了。(目前只是这么认为,还没有找到足够的证据。)session cookie cache 等等都可以保存,这个我明白,但是如果不这么做,就没有别的办法了吗?
放到if(!ispostback)中,但是你又需要model这样一个全局的变量里的一些属性值.页面再次加载的时候,你想保留model里的属性值,如果不用session之类的方法 ,model就是空的,你就要重新捞一次_id,再跑一次bll.GetModel_TelType(_id);所以你又要把ispostback去掉就是这样,页面不会保存你想要的信息,除非你指定要保存.如果不保存,你就得自己再取一次
viewstate["value"]=model;// 在你需要用的地方,在把model从viewstate中取出来
model=(数据类型)viewstate["value"];