2017-04-03 77 views
0

我用jquery ajax调用了一个很好的网页,但注意到Page_Load未被调用用于jquery ajax POST请求。我需要Page_Load调用来访问已登录用户的名称,以通过POST接收到的数据来存储数据库,因为代码隐藏中的静态WebMethod无法访问Page对象。Page_Load未在POST请求上调用

我的问题:Page_Load没有被POST请求调用是正常的吗?如果是这样,如何获取用户名的Page对象,而不使用Page_Load?

comment on this question我读:支持WebMethod不再维护。您应该考虑切换到Web API,因为它支持得很好(并且更简单!)

但是,使用Google搜索并没有真正产生关于Web API的信息,因为这是一个非常普遍的搜索术语。有关于此的任何信息?


更新:

我的问题是由静态的WebMethod,使用的HttpContext如下评论解决,所以我并不需要的Page_Load。

+0

是存储在'session'您的用户名直接实现同样的事情? – Curiousdev

+0

@Curiousdev不,用户名取自Page.User.Identity.Name。而Session也不适用于静态WebMethod。 – Roland

+0

您正在使用ajax ...因此,您在“POST”后不会有Page_Load,因为您的页面未刷新。你可以在ajax post的响应中刷新你的页面,但是如果你使用ajax,这没有多大意义。你必须创建一个策略来在响应后访问这个值。但是您首先需要了解ajax请求的工作原理。 –

回答

1

有两种方法可以做到这一点

  1. 在JavaScript中添加该设定的电流username一个变量,并通过这个作为参数传递给POST方法。

    var usrName = "@HttpContext.Current.User.Identity.Name";

  2. 的HttpContext也可在静态的WebMethod代码隐藏,所以你可以使用这个以及

+1

有了这个解决方案,Page_Load不需要被调用,消除了我的第一个问题。 – Roland