高手给出个解决方案

xiaofan_sap 2009-12-26 12:14:58
同事在开发项目时,用到了session,viewstate用来保存用户id和用户名字,大体的写法是
private string strUserId;
Page_load()
{
strUserId=Session["userID"].ToString();
}
然后后台有这么一个方法
Ajax.Method()
public string getUserId()
{
return strUserId;
}
在前台如果在代码显示块中引用的话
没有问题,可以得到该用户的值。比如
<%=getUserId();%>
但是在前台如果用ajax方法的话,
比如
document.getElementById(“lblUseriD”).innerHTML=frmEmployee.getUserId().value;
得到的值就是个空值。
大体原因是因为ajax调用该方法是,不会经过page_load方法了,只会走默认的构造函数,也就是没有办法给strUserId变量赋值了。这可能也是ajax异步造成的原因。
请问高手们 你们是如何解决的,有什么好的方法么?用viesstate也是这个现象。
...全文
147 15 打赏 收藏 举报
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sohighthesky 2009-12-28
  • 打赏
  • 举报
回复
没什么原理的,去看看ajaxpro的原理吧
xiaofan_sap 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 sohighthesky 的回复:]
try to see this:http://hi.baidu.com/sohighthesky/blog/item/fb171b2a05890bf2e6cd40c3.html
[/Quote]
谢谢你的帖子 ,请问能告诉原理吗,为什么不能啊 ,该帖子只告诉了解决方案
chinank 2009-12-28
  • 打赏
  • 举报
回复
都是高手啊,呵呵,学习了,程序员交流群101179725
  • 打赏
  • 举报
回复
在Page_load中添加AjaxPro.Utility.RegisterTypeForAjax(typeof(Register));

这样就俱全啦,上次忘说啦
xiaofan_sap 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuyiazl 的回复:]
Ajax.Method()
public string getUserId()
{
  return Session["userID"].ToString();
}
[/Quote]
如果
document.getElementById(“lblUseriD”).innerHTML=frmEmployee.getUserId().value;
这样调用的话 ,Session["userID"].ToString();是空值,因为ajax是异步到的,不会与当前会话同步 ~~
xuyiazl 2009-12-26
  • 打赏
  • 举报
回复

Ajax.Method()
public string getUserId()
{
return Session["userID"].ToString();
}
xiaofan_sap 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zoutuo 的回复:]
不知楼主用什么方式在前台接值,可以写一个隐藏域,用 <%=%>。如果是EL表达式的话就简单了。${""}就行了
[/Quote]
用这种方式接:

document.getElementById(“lblUseriD”).innerHTML=frmEmployee.getUserId().value;

能不能给个例子啊
zoutuo 2009-12-26
  • 打赏
  • 举报
回复
不知楼主用什么方式在前台接值,可以写一个隐藏域,用<%=%>。如果是EL表达式的话就简单了。${""}就行了
zoutuo 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xiaofan_sap 的回复:]
引用 8 楼 zoutuo 的回复:
frmEmployee.getUserId()
frmEmployee是一个对象?
请问您用Ajax用的是什么传输方式?用到json吗?
JScript code
frmEmployee
是ASP.NET页的类啊
[/Quote]
这个,我可以不会……sorry
xiaofan_sap 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zoutuo 的回复:]
frmEmployee.getUserId()
frmEmployee是一个对象?
请问您用Ajax用的是什么传输方式?用到json吗?
[/Quote]

frmEmployee

是ASP.NET页的类啊
zoutuo 2009-12-26
  • 打赏
  • 举报
回复
frmEmployee.getUserId()
frmEmployee是一个对象?
请问您用Ajax用的是什么传输方式?用到json吗?
xiaofan_sap 2009-12-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zy_heavenhelpmyheart 的回复:]
用Ajax第二种用法:(需下载两个配置文件,需引用。下载地址:www.schwarz-interactive.de
  1.右击站点名字点add reference添加AjaxPro.2.dll的引用,如果你用的是vs2003,则添加对AjaxPro.dll的引用,然后我们在添加个web.config文件(很郁闷的是vs2005不再自动添加web.config文件拉),修改web.config如下:

<!--
所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,
    而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。 相当于Java中的过滤器
-->
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>


2.针对你获不到session值的这种缺陷,可以在指定AjaxMethod服务器端方法时,给予session读写的权限


//这样制定可以获得session中的值
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
       
        public string getUserId()
        {
            string strUserId= HttpContext.Current.Session["userID"].ToString();
           
            return strUserId;
           
        }


用这种方法你的问题就可以解决啦,而且不用为得不到session的值而发愁!!!!!!
[/Quote]
我目前就是这样做的
  • 打赏
  • 举报
回复
忘说啦:把哪个引用文件放在bin文件夹下,以免项目移走时引用文件找不到!不然运行就出错啦
  • 打赏
  • 举报
回复
用Ajax第二种用法:(需下载两个配置文件,需引用。下载地址:www.schwarz-interactive.de
1.右击站点名字点add reference添加AjaxPro.2.dll的引用,如果你用的是vs2003,则添加对AjaxPro.dll的引用,然后我们在添加个web.config文件(很郁闷的是vs2005不再自动添加web.config文件拉),修改web.config如下:

<!--
所有的ajaxpro/*.ashx请求都由Ajax.PageHandlerFactory处理,
而不是由默认的System.Web.UI.PageHandlerFactory处理程序工厂来处理。 相当于Java中的过滤器
-->
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>


2.针对你获不到session值的这种缺陷,可以在指定AjaxMethod服务器端方法时,给予session读写的权限


//这样制定可以获得session中的值
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]

public string getUserId()
{
string strUserId= HttpContext.Current.Session["userID"].ToString();

return strUserId;

}


用这种方法你的问题就可以解决啦,而且不用为得不到session的值而发愁!!!!!!
发帖
JavaScript

8.7w+

社区成员

Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
帖子事件
创建了帖子
2009-12-26 12:14
社区公告
暂无公告