.net環境下基於ajax的mvc方案
<%
@Pagelanguage="c#"Codebehind="Default.aspx.cs"AutoEventWireup="false"Inherits="CN.Teddy.AjaxHelper.WebForm1"%>
<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<metaname="GENERATOR"Content="MicrosoftVisualStudio.NET7.1">
<metaname="CODE_LANGUAGE"Content="C#">
<metaname="vs_defaultClientScript"content="JavaScript">
<metaname="vs_targetSchema"content="http://schemas.microsoft.com/intellisense/ie5">
<scripttype="text/javascript"language="javascript"src="js/AjaxHelper.js"></script>
</HEAD>
<body>
<formid="Form1"method="post"runat="server">
<divid="view2">loading
</div>
<scripttype="text/javascript">
Updater(『AjaxTemplate/GetPageSrc『,『view2『,『url=http://www.cnblogs.com『);
</script>
</form>
</body>
</HTML>
AjaxHelper.js摘要:
varAjaxHelperUrl=newString("Ajax.aspx");
varUpdater=function(ajaxTemplate,output,params,onComplete)
{
if(typeofoutput==『string『)
{
output=$(output);
}
newAjax.Request(『Ajax.aspx『,{onComplete:function(transport){if(output!=null){output.innerHTML=FormatContent(transport.responseText);}if(onComplete!=null){onComplete(FormatContent(transport.responseText))}},parameters:params+『&AjaxTemplate=『+ajaxTemplate});
}
varSerializeForm=function(form)
{
returnForm.serialize(form);
}
varFormatContent=function(str)
{
varcontent=newString(str);
varprefix=newString("<!--AjaxContent-->");
content=content.substring(content.indexOf(prefix,0)+prefix.length,content.length-9);
returncontent;
}UserControl GetPageSrc.ascx.cs摘要:
privatevoidPage_Load(objectsender,System.EventArgse)
{
lbUrl.Text=Request.Form["url"];
System.Net.WebClientclient=newSystem.Net.WebClient();
client.Headers.Add("User-Agent","Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;.NETCLR1.1.4322)");
try
{
txtPageSource.Text=newSystem.IO.StreamReader(client.OpenRead(lbUrl.Text),System.Text.Encoding.UTF8).ReadToEnd();
}
catch(Exceptionex)
{
throwex;
}
}
Enjoy!//文章結束 posted on 2005-06-11 18:55 Teddy『s Knowledge Base 閱讀(2646) 評論(31) 編輯收藏 Feedback#re: .Net環境下基於Ajax的MVC方案 2005-06-12 21:33 賀星河 寫得不錯:) 關於Ajax技術的討論,我建議你可以和李錕(MSN:unruly_wind@sina.com)多多交流,他對此已經有很多的經驗,尤其是對http://maps.google.com的應用研究,當然,如果能夠得到你的聯繫方式更好了 #re: .Net環境下基於Ajax的MVC方案 2005-06-12 21:39 Teddy『s Knowledge Base 我的msn: teddyma#vip.sina.com(#請替換成@),希望能和任何有共同興趣的朋友交流! #re: .Net環境下基於Ajax的MVC方案 2005-06-13 14:36 ahnan 有研究過 ASP.NET 2.0 中的 Script Callback 嗎? 有研究過 Ajax.NET, Ajax Library for .NET 嗎? 我覺得你可以從上述方法中了解更多ajax 在 .NET 的應用實踐。 #re: .Net環境下基於Ajax的MVC方案 2005-06-13 14:42 Teddy『s Knowledge Base to ahnan: 你說的兩個東西都是對xmlhttprequest的不同封裝實現而已,我都花時間研究過,這兩個封裝和我的代碼在callback機制上本質是一樣的,我的代碼中的ajax封裝,基於prototype1.2的一個ajax實現,是與後台語言獨立的,調用方式也比你說的這兩個簡單,並且我的框架可以很容易的移植到非.net平台。 而最重要的是,你說的這兩個ajax實現,會造成本文要解決的問題之一asp.net原有的mvc構架在這兩種應用模式下會被破壞,我的框架的設計初衷就是解決這一問題,重新搭建一個清晰的mvc。 #re: .Net環境下基於Ajax的MVC方案 2005-06-14 00:01 逐靈 Ajax Library for .NET 我剛剛看過它的一些功能演示和簡單的使用方法, 第一感覺就是必須在Client端進行數據的綁定,覺得這比較麻煩。 剛剛看過Teddy的,使數據在Server端綁定,確定方便了不少。 不過剛剛沒有調試成功,現在正在找原因。 個人愚見,沒仔細研究過,說錯了請指正。 #re: .Net環境下基於Ajax的MVC方案 2005-06-14 00:56 逐靈 看了半天終於明天了Js裡面的運行過程, 只是, 好像沒辦法成功訪問ajdx.aspx文件。 這是什麼原因呢? #re: .Net環境下基於Ajax的MVC方案 2005-06-14 01:21 逐靈 終於知道是怎麼回事了。 js裡面默認是用『Post『方式傳遞參數的,可是,不知道是因為什麼原因,合使用Post參數導致根本無法訪問到ajax.aspx文件,於是我改成用『get『方式,就可以了。請問這是什麼原因呢? 發現『post『不行是因為我期間把請求源碼的地址改為『http://www.skycn.com『,它會返回一個關於『post『的錯誤頁面,於是就發現了這個問題。 你們調試是不是這樣的呢? #re: .Net環境下基於Ajax的MVC方案 2005-06-14 09:37 Teddy『s Knowledge Base 照道理get可以post應該也可以的,用post的話好處是可以避免用戶直接從地址欄訪問ajax.aspx,當然,也可以改一下js使得可以在get和post之間進行選擇。 你的情況我沒遇到過,不過,通過get方式傳遞對參數長度有限制,一般應該在255個字元之內,post應該能大一點,你可以再試試能不能找到post錯誤的真正原因,找到原因的話希望能共享一下! #re: .Net環境下基於Ajax的MVC方案 2005-06-15 16:12 jlzhou 感謝Teddy『s share! Net環境下基於Ajax的MVC方案,有沒有更新版呢? #re: .Net環境下基於Ajax的MVC方案 2005-06-15 16:21 Teddy『s Knowledge Base 目前還沒有更新的版本,我的一個個人項目會完全基於該方案進行開發,會在開發的過程中不斷的完善這個方案,目標是能達到像 http://backbase.com/index.php 這個網站這樣的用戶體驗,由於我這個方案數據的填充構造基於UserControl,可以更多利用asp.net原有控制項的數據綁定能力,代碼量應該能減少不少! #re: .Net環境下基於Ajax的MVC方案 2005-06-15 16:39 jlzhou 調試不能通過,只有一個loading...顯示就不動了。 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 16:52 Teddy『s Knowledge Base 根據你調試機器的網速,loading的時間可能有長短,只要能編譯通過,就應該能正常運行的,我這兒在一個新的環境又試了下完全沒問題,建議按如下步驟調試該範例: 1、下載並解壓縮到某路經比如:d:AjaxHelper 2、為AjaxHelper目錄建一個虛擬目錄AjaxHelper 3、用VS.Net打開AjaxHelper.sln 4、編譯 5、將Default.aspx設為起始頁 6、按F5運行 7、頁面顯示loading...時請稍作等待,此時正在下載指定的網頁源碼 8、下載源碼完畢頁面會顯示源碼內容 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 16:56 jlzhou 感謝指點,我就是按照上述步驟做的,可是還是不行,我再研究一下。 再次感謝! #re: .Net環境下基於Ajax的MVC方案 2005-06-15 20:10 jlzhou 又折騰了半天,死活都不行!我真笨! #re: .Net環境下基於Ajax的MVC方案 2005-06-15 20:49 Teddy『s Knowledge Base 不要氣餒,你可以單步調試一下,包括對js,整個工程除了js之外手寫的有效的代碼可能還不到10行,應該比較容易能找出原因的。 或者說說看你主要在哪一步出錯,是編譯不通過,還是運行時腳本報錯呢? #re: .Net環境下基於Ajax的MVC方案 2005-06-15 21:25 jlzhou 哪也沒報錯,就是瀏覽器只有loading顯示,然後再也沒有任何動靜了。 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 21:29 jlzhou 我剛剛修改了ajax.aspx的文件名,也不報錯,看來沒有callback來訪問這個文件。 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 21:31 jlzhou 基本鎖定是js的問題。 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 21:48 jlzhou 我的IE版本是6.0.2800.1106.xpsp2 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 21:53 Teddy『s Knowledge Base 那確實比較奇怪,前面有位朋友也遇到過比較奇怪的問題,你參考他說的解決辦法試試,另外,你也可以看看默認情況下瀏覽default.aspx的ie的encoding是什麼,可以試試encoding在gb2312和utf-8間切換試試。 另外在就是你可以在頁面的Updater函數前後加上try{}catch(ex){window.alert(ex)},看看是什麼錯誤! #re: .Net環境下基於Ajax的MVC方案 2005-06-15 22:10 jlzhou 還是不行,加上 try{Updater(『AjaxTemplate/GetPageSrc『, 『view2『, 『url=http://www.smartprise.com『);}catch(ex){window.alert(ex)} 也不報錯,就是loading沒完。 我的QQ是9842766 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 22:13 jlzhou 默認情況下瀏覽default.aspx的ie的encoding是utf8,試試encoding在gb2312和utf-8間切換,IE右上角的小窗口圖標動個不停,IE窗口裡什麼都沒有。 #re: .Net環境下基於Ajax的MVC方案 2005-06-15 22:17 Teddy『s Knowledge Base 建議你還是對js進行下單步調試,這樣執行js過程中的錯誤都能被捕獲,需要先在ie的選項里開啟腳本調試,然後再vs.net裡面對js設斷點就可以了。不好意思,因馬上有點事要離開現在不能和你qq交流,如果還解決不了,明天白天和你qq吧,不過我很少qq,一般只用msn。 #re: .Net環境下基於Ajax的MVC方案 2005-06-16 09:06 藍色閃電 呵呵,原來就是JS+XmlHttp+.NET的組合! 用了這個技術很久,突然今天發現它有個新名字:Ajax,有意思! 上面的兄弟: try{Updater(『AjaxTemplate/GetPageSrc『, 『view2『, 『url=http://www.smartprise.com『);}catch(ex){window.alert(ex)} 沒用的,訪問不到頁面並不是JS代碼發生異常,catch不到錯誤的! #re: .Net環境下基於Ajax的MVC方案 2005-06-16 10:19 Teddy『s Knowledge Base 為AjaxHelper又寫了點使用範例,請訪問 http://www.cnblogs.com/teddyma/archive/2005/06/16/175298.html #re: .Net環境下基於Ajax的MVC方案 2005-06-19 11:48 microhf 好東西呀 #re: .Net環境下基於Ajax的MVC方案 2005-06-20 11:26 Teddy『s Knowledge Base 最近更新AjaxHelper0.4,新版本兼容0.3並新增支持Sps下的WebPart開發 http://www.cnblogs.com/teddyma/archive/2005/06/19/176859.html #re: .Net環境下基於Ajax的MVC方案 2005-06-30 13:18 tangle 調試成功,非常好用,感謝共享 #re: .Net環境下基於Ajax的MVC方案 2005-07-03 09:58 思源 有發覺嗎?用Ajax做網站不能夠很好的被搜索引擎檢索,雖然是個很好的技術 #re: .Net環境下基於Ajax的MVC方案 2005-07-03 11:29 Teddy『s Knowledge Base @思源: 是不是search egine friendly的問題,其實看你的整個網站結構設計,比如,我可以通過site map和url rewrite重寫的形式暴露整個站點的頁面結構給搜索引擎,完全可以達到需要的效果! #re: .Net環境下基於Ajax的MVC方案 2005-07-03 12:53 思源 是的,不過覺得Ajax在OA或站點後台方面,可以帶來不少好處,個人觀點
推薦閱讀:
※三個簡單卻高分的球鞋搭配方案 小白鞋購買指南
※一份思路清晰的用戶成長體系設計方案
※萬家文化披露趙薇找銀行借錢遭拒過程 新交易方案資金槓桿降至8.8倍(17.2.16)
※梁振英重申在基本法起草時兩個普選方案中均無「公民提名」
※冬季保暖疊穿'腫'成熊?這7種搭配方案你必須Get到!