[英]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.