前言本技術完全開源請各位兄弟隨便修改使用但是必須能夠保留相關版權的說明我的小小技術能在您的項目中使用是我的光榮希望不要破滅了我僅存的自豪感衷心感謝在此鞠躬!
本技術主要基 提供頁面的javascript直接通過ajax調用服務端的c#方法完全打通javascript往的最後防線
本技術實在開發pixysoftframeworkneobesjsons中用到的一項技術而jsons框架主要負責面向異構網站提供基於jsons的數據庫訪問
技術演示aspx頁面簡介
<%@ Page Language=C# AutoEventWireup=true CodeFile=Defaultaspxcs Inherits=_Default %>
<%@ Register Assembly=PixysoftAjax Namespace=PixysoftFrameworkNoebeJsonsWebControls
TagPrefix=cc %>
<!DOCTYPE html PUBLIC //WC//DTD XHTML Transitional//EN transitionaldtd>
<html xmlns=>
<head runat=server>
<title>pixysoftajax</title>
<script type=text/javascript>
var code=;
function ServerMethodCallback(value)
{
code = value;
MessageinnerText = value;
}
</script>
</head>
<body>
<form id=form runat=server>
<div>
<cc:PixysoftAjaxBase ID=PixysoftAjaxBase runat=server />
<br />
result: <span id=Message></span>
<input type=button value=讓我們回調吧! onclick=ServerMethod(code) id=Button />
</div>
</form>
</body>
</html>
後台代碼簡介
using System;
using SystemData;
using SystemConfiguration;
using SystemWeb;
using SystemWebSecurity;
using SystemWebUI;
using SystemWebUIWebControls;
using SystemWebUIWebControlsWebParts;
using SystemWebUIHtmlControls;
public partial class _Default : SystemWebUIPage
{
protected void Page_Load(object sender EventArgs e)
{
}
public int ServerMethod(int value)
{
return value * ;
}
}
頁面有個htmlbutton 點擊會激活 ServerMethod這個方法
後台會處理這個方法回調頁面的ServerMethodCallback同時把運算結果傳入
運行結果就是不斷結算 code *並顯示在頁面的<span id=Message>裡面
如果服務端的方法不需要返回參數那麼可以不寫ServerMethodCallback
教程說明
首先需要在服務端聲明一個public的方法 例如public int ServerMethod(int value); 可以無返回值
在javascript裡面直接使用服務端聲明的方法例如onclick=ServerMethod(code) 區分大小寫
如果服務端方法有返回值那麼需要在javasccript聲明一個回調方法命名規則是服務端方法+Callback例如function ServerMethodCallback(value)
完成
注意事項
非常悲哀調用過程不支持session / cache 等就是完全的無狀態這是由於的一個bug造成的具體
ckID=
同樣悲哀調用的方法不支持直接執行只能通過event激活例如一下是個無效調用
<script>
int code = ;
ServerMethod(code);
</script>
這是由於頁面沒有完全加載完畢而調用的問題不會報錯但是沒有效果
相關技術介紹
本技術主要使用了的回調技術ICallbackEventHandler
結合了反射原理
具體就不點明了各位大俠看看源碼就懂了
源碼
From:http://tw.wingwit.com/Article/program/net/201311/12631.html