html += "Hello " + name + "<br>";
html += "Thank ">

AJAX.NET用户开发指南(5)

80酷酷网    80kuku.com

  ajax|开发指南

[Ajax.AjaxMethod]

public string Test1(string name, string email, string comment){
string html = "";
html += "Hello " + name + "<br>";
html += "Thank you for your comment <b>";
html += System.Web.HttpUtility.HtmlEncode(comment);
html += "</b>.";
return html;
}

  SessionState

  在服务端函数,你可能需要接受传送的session信息,为了做到这一点,必须要在想实现这个方式的服务端函数的Ajax.AjaxMethod属性上传递一个参数

  在查看ajax可以支持session的时候,我们先看看其他的特征在下面这个例子中,我们有一个文档管理系统,当一个用户对文档进行编辑的时候会给这个文档加锁,其他用户需要等到这个文档可用时才能修改不使用Ajax,用户需要不断等待刷新,因为不得不不断的去检查文档的状态是否为可用,这当然不是一个很好的方案用ajax的session state支持,这就比较容易了

  我们首先写一个函数,这个函数通过遍历文档ID找到用户需要的文档,存储到session里,并返回没有占用的文档:

'Vb.Net

<Ajax.AjaxMethod(HttpSessionStateRequirement.Read)> _
Public Function DocumentReleased() As ArrayList
If HttpContext.Current.Session("DocumentsWaiting") Is Nothing Then
Return Nothing
End If
Dim readyDocuments As New ArrayList
Dim documents() As Integer = CType(HttpContext.Current.Session("DocumentsWaiting"), Integer())
For i As Integer = 0 To documents.Length - 1
Dim document As Document = document.GetDocumentById(documents(i))
If Not document Is Nothing AndAlso document.Status = DocumentStatus.Ready Then
readyDocuments.Add(document)
End If
Next
Return readyDocuments
End Function

//C#
[Ajax.AjaxMethod(HttpSessionStateRequirement.Read)]
public ArrayList DocumentReleased(){
if (HttpContext.Current.Session["DocumentsWaiting"] == null){
return null;
}

ArrayList readyDocuments = new ArrayList();
int[] documents = (int[])HttpContext.Current.Session["DocumentsWaiting"];
for (int i = 0; i < documents.Length; ++i){
Document document = Document.GetDocumentById(documents[i]);
if (document != null && document.Status == DocumentStatus.Ready){
readyDocuments.Add(document);
}
}
return readyDocuments;
}
}

  我们在属性参数中指明了HttpSessionStateRequirement.Read(还可以是Write and ReadWrite)

  下面写javascript函数来使用这个方法带来的结果:

<script language="javascript">
function DocumentsReady_CallBack(response){
if (response.error != null){
alert(response.error);
return;
}

if (response.value != null && response.value.length > 0){
var div = document.getElementById("status");
div.innerHTML = "The following documents are ready!<br />";
for (var i = 0; i < response.value.length; ++i){
div.innerHTML += "<a href=\"edit.aspx?documentId=" + response.value[i].DocumentId + "\">" + response.value[i].Name + "</a><br />";
}
}
setTimeout('page.DocumentReleased(DocumentsReady_CallBack)', 10000);
}

</script>
<body >


  页面加载后每10秒钟向服务器函数请求一次如果有返回,则call back函数检查response,并把最新的结果显示出来

 结论

  Ajax技术可以给客户端提供丰富的客户体验,而ajax.net为您容易的实现这样强大的功能提供了可能。



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: