繁体   English   中英

如何从AJAX服务访问后台代码?

[英]How to access code-behind from AJAX Service?

我对ASP.NET相对较新(目前正在大学学习),并且对C#有很好的了解。

问题:

我有一个MSQL数据库和一个处理SQL请求的DatabaseConnection类。 从数据库中获取数据后,我将其存储在3个类中-Person,Project,Task,其中Person类包含用户信息(角色,名称等)和2个列表-List和List。

当用户登录时,将在“代码背后”中创建一个Person对象,其中包含来自数据库的所有相关信息。 如果我刷新/移动到另一个年龄段,则将重新创建这些对象。

public partial class _Default : System.Web.UI.Page
{
private Person user;

   protected void Page_Load(object sender, EventArgs e)
   {
       user = new Person(User.Identity.Name.ToString());
   }
   //other methods
}

第一个问题:是否有可能避免以某种方式重新创建Person对象(保持它而不将其存储在客户端上)?

继续:现在,我想从这些类中获取数据并使用AJAX / JQUERY显示。

我创建了一种AJAX服务,其方法可以为用户获取项目计数。 我设法做到这一点的唯一方法是将用户名从HTTPContext传递到服务-创建一个新的person对象,并从那里提取我要避免的信息。

[ServiceContract(Namespace = "")]
 [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  public class AjaxService
 {
[OperationContract]
 public string UserProjectCount(String email)
 {
    Person user = new Person(email);
    String projectCount = user.getProjectsCount() + "";
    return projectCount;       
  }
}

我从Default.aspx页调用此方法:

<script type="text/javascript">
    function pageLoad() {
        var username = '<%=HttpContext.Current.User.Identity.Name %>';
        AjaxService.UserProjectCount(username, OnComplete, OnError);
    }
    function OnComplete(result) {
        var projCount = "" + result;
        $get("myProjects").innerText = " (" + projCount + ")";
    }
    function OnError(errorMessage) {
        alert(errorMessage.get_message());
    }
  </script>

第二个问题:是否可以从WCF服务中访问CodeBehind页面中当前包含的已经创建的Person对象,而不是创建一个新的Person对象?

第三:我可以/应该创建一个包含所有这些数据对象的服务吗?

到目前为止,我一直在努力解决上述问题,而我越来越困惑。 蚂蚁的帮助将不胜感激!

谢谢。

是否有可能避免以某种方式重新创建Person对象(保持它而不将其存储在客户端上)?

是的,使用ASP.NET缓存

是否可以从WCF服务中访问CodeBehind页面中当前包含的已经创建的Person对象,而不用创建一个新的Person对象?

是的,可以在服务中使用缓存的对象。

是否可以创建包含所有这些数据对象的服务?

您可以创建一个返回并操纵对象的服务层 这可以由Web服务(WCF或Restful服务)包装。

如果要存储在内存中的对象(而不只是磁盘)是特定于用户会话的对象,请查看ASP.NET Session

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM