欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
.net環(huán)境下基于ajax的mvc方案
1、問(wèn)題背景

現在,越來(lái)越多人開(kāi)始嘗試基于A(yíng)jax進(jìn)行無(wú)刷新的Web開(kāi)發(fā),不過(guò),在.Net環(huán)境下,應用Ajax并不是非常方便,這主要可能是由以下一些原因造成的:

·由于A(yíng)jax基于javascript的本質(zhì),使得開(kāi)發(fā)者必須對javascript非常了解,起碼,其javascript能力足以實(shí)現對callback返回內容對頁(yè)面的更新,所以開(kāi)發(fā)的門(mén)檻就有一定程度的上升

·當基于A(yíng)jax機制進(jìn)行開(kāi)發(fā)時(shí),原有的基于postback方式下時(shí),asp.net由后臺邏輯代碼(Model),aspx頁(yè)面(View)、aspx.cs(Controller)構成的MVC構架其實(shí)失效了,當callback返回數據時(shí),要么在client端用javascript解析返回內容以實(shí)現更新,要么則必須在server端構造好比較完整的html代碼,再直接由javascript將該構造好的html設置給某個(gè)頁(yè)面對象,很顯然,這樣一來(lái),要實(shí)現一個(gè)最簡(jiǎn)單的callback功能,都要不少代碼,并且是相對比較亂的代碼,即使在即將到來(lái)的asp.net2.0該問(wèn)題依然不會(huì )得到有效解決

2、本文目的

本文旨在充分利于現有的asp.net本身的特點(diǎn)和ajax的特性,提出一個(gè)用于在asp.net環(huán)境下進(jìn)行基于ajax的web開(kāi)發(fā)的MVC方案,以實(shí)現以下主要目的:

·Asp.Net環(huán)境下用于A(yíng)jax的清晰的MVC構架

·降低編程人員對過(guò)多javascript編碼的依賴(lài)以降低編程門(mén)檻

·靈活的支持ajax模式下的常用開(kāi)發(fā)方式

3、問(wèn)題分析

如何實(shí)現以上幾個(gè)主要目的呢?

?。保┮獙mlhttprequest對更良好的封裝,以使調用方式更簡(jiǎn)單;

?。玻┍M量在server端進(jìn)行更新數據的構造,但是也要避免每次返回數據都手工構造,因此,就想到可以充分使用UserControl,由UserControl作為"View",對應的由ascx.cs文件作為"Controller",這樣構成的MVC也是比較清晰的;
 
4、問(wèn)題解決

基于以上思想,本人實(shí)現了以下一個(gè)組類(lèi)庫以簡(jiǎn)化該過(guò)程:

源碼及范例下載

代碼簡(jiǎn)析:

1)首先在client端,AjaxHelper.js封裝了xmlhttprequest,并提供一個(gè)將現有的<form>序列化為形如param1=v1&param2=v2&...形式用于post的參數;

Updater(ajaxTemplate, output, params, onComplete)函數,用于實(shí)現一次callback調用

ajaxTemplate(必選):指定執行需要功能的UserControl路徑
output(可選):填充返回數據的指定標簽的引用或ID值
params(可選):形如param1=v1&param2=v2&...的post參數
onComplete(可選):可用于對返回數據進(jìn)行特殊處理的回調函數,函數格式function(str),str為返回的數據

SerializeForm(form)函數,用于序列化<form>

form:可以是對指定<form>的引用或ID值

2)在server端,Ajax.aspx文件封裝了對由客戶(hù)端ajaxTemplate指定的UserControl的調用,其余的具體邏輯功能則在特定的UserControl及其ascx.cs內實(shí)現;

3)這樣,具體執行一次callback時(shí),編程人員只需在頁(yè)面引用AjaxHelper.js,并在指定的位置通過(guò)javascript:Updater(ajaxTemplate, output, params, onComplete)進(jìn)行調用,如果需要對某一form進(jìn)行提交,則可調用javascript:SerializeForm(form)序列化該form并傳給params,當然也可以手動(dòng)構造params,并指定將返回數據通過(guò)設置output應用的頁(yè)面或通過(guò)onComplete自定義處理。

4)由于充分使用UserControl,意味著(zhù),可以充分利用asp.net原有的web服務(wù)器端控件和數據綁定機制,這樣其實(shí),已經(jīng)很大程度上簡(jiǎn)化了返回數據的構造,在ascx.cs中,通過(guò)Request.Form[ParamName]就能訪(fǎng)問(wèn)到client端傳入的params,再訪(fǎng)問(wèn)邏輯代碼獲取源數據。

5、范例

包含在源碼中的范例實(shí)現了一個(gè)簡(jiǎn)單的無(wú)刷新獲取博客園首頁(yè)內容到一個(gè)textarea的功能,詳見(jiàn)源碼!

部分范例源碼:

Default.aspx

<%@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false" Inherits="CN.Teddy.AjaxHelper.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    
<HEAD>
        
<title>WebForm1</title>
        
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        
<meta name="CODE_LANGUAGE" Content="C#">
        
<meta name="vs_defaultClientScript" content="JavaScript">
        
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
        
<script type="text/javascript" language="javascript" src="js/AjaxHelper.js"></script>
    
</HEAD>
    
<body>
        
<form id="Form1" method="post" runat="server">
            
<div id="view2">loading
</div>
            
<script type="text/javascript">
                Updater(‘AjaxTemplate
/GetPageSrc‘, ‘view2‘, ‘url=http://www.cnblogs.com‘);
            
</script>

        
</form>
    
</body>
</HTML>

AjaxHelper.js摘要:

var AjaxHelperUrl = new String("Ajax.aspx");



var Updater = function(ajaxTemplate, output, params, onComplete)

{

    
if (typeof output == ‘string‘)

    {

        output 
= $(output);

    }

    

    
new Ajax.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 });

}



var SerializeForm = function(form)

{

    
return Form.serialize(form);

}



var FormatContent = function(str)

{

    
var content = new String(str);

    
var prefix = new String("<!--AjaxContent-->");

    content 
= content.substring(content.indexOf(prefix, 0+ prefix.length, content.length - 9);

    
return content;

}

UserControl GetPageSrc.ascx.cs摘要:

        private void Page_Load(object sender, System.EventArgs e)
        
{
            lbUrl.Text 
= Request.Form["url"];

            System.Net.WebClient client 
= new System.Net.WebClient ();
            client.Headers.Add(
"User-Agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)");
            
try
            
{
                txtPageSource.Text 
= new System.IO.StreamReader(client.OpenRead(lbUrl.Text), System.Text.Encoding.UTF8).ReadToEnd();
            }

            
catch(Exception ex)
            
{
                
throw ex;
            }

        }



Enjoy!

//文章結束
posted on 2005-06-11 18:55 Teddy‘s Knowledge Base 閱讀(2646) 評論(31)  編輯 收藏

Feedback

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-12 21:33 賀星河
寫(xiě)得不錯:)
關(guān)于A(yíng)jax技術(shù)的討論,我建議你可以和李錕(MSN:unruly_wind@sina.com)多多交流,他對此已經(jīng)有很多的經(jīng)驗,尤其是對http://maps.google.com的應用研究,當然,如果能夠得到你的聯(lián)系方式更好了
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-12 21:39 Teddy‘s Knowledge Base
我的msn: teddyma#vip.sina.com(#請替換成@),希望能和任何有共同興趣的朋友交流!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-13 14:36 ahnan
有研究過(guò) ASP.NET 2.0 中的 Script Callback 嗎? 有研究過(guò) Ajax.NET, Ajax Library for .NET 嗎? 我覺(jué)得你可以從上述方法中了解更多ajax 在 .NET 的應用實(shí)踐。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-13 14:42 Teddy‘s Knowledge Base
to ahnan:

你說(shuō)的兩個(gè)東西都是對xmlhttprequest的不同封裝實(shí)現而已,我都花時(shí)間研究過(guò),這兩個(gè)封裝和我的代碼在callback機制上本質(zhì)是一樣的,我的代碼中的ajax封裝,基于prototype1.2的一個(gè)ajax實(shí)現,是與后臺語(yǔ)言獨立的,調用方式也比你說(shuō)的這兩個(gè)簡(jiǎn)單,并且我的框架可以很容易的移植到非.net平臺。

而最重要的是,你說(shuō)的這兩個(gè)ajax實(shí)現,會(huì )造成本文要解決的問(wèn)題之一asp.net原有的mvc構架在這兩種應用模式下會(huì )被破壞,我的框架的設計初衷就是解決這一問(wèn)題,重新搭建一個(gè)清晰的mvc。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-14 00:01 逐靈
Ajax Library for .NET 我剛剛看過(guò)它的一些功能演示和簡(jiǎn)單的使用方法,
第一感覺(jué)就是必須在Client端進(jìn)行數據的綁定,覺(jué)得這比較麻煩。
剛剛看過(guò)Teddy的,使數據在Server端綁定,確定方便了不少。
不過(guò)剛剛沒(méi)有調試成功,現在正在找原因。

個(gè)人愚見(jiàn),沒(méi)仔細研究過(guò),說(shuō)錯了請指正。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-14 00:56 逐靈
看了半天終于明天了Js里面的運行過(guò)程,
只是,
好像沒(méi)辦法成功訪(fǎng)問(wèn)ajdx.aspx文件。
這是什么原因呢?
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-14 01:21 逐靈
終于知道是怎么回事了。
js里面默認是用‘Post‘方式傳遞參數的,可是,不知道是因為什么原因,合使用Post參數導致根本無(wú)法訪(fǎng)問(wèn)到ajax.aspx文件,于是我改成用‘get‘方式,就可以了。請問(wèn)這是什么原因呢?
發(fā)現‘post‘不行是因為我期間把請求源碼的地址改為‘http://www.skycn.com‘,它會(huì )返回一個(gè)關(guān)于‘post‘的錯誤頁(yè)面,于是就發(fā)現了這個(gè)問(wèn)題。
你們調試是不是這樣的呢?
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-14 09:37 Teddy‘s Knowledge Base
照道理get可以post應該也可以的,用post的話(huà)好處是可以避免用戶(hù)直接從地址欄訪(fǎng)問(wèn)ajax.aspx,當然,也可以改一下js使得可以在get和post之間進(jìn)行選擇。

你的情況我沒(méi)遇到過(guò),不過(guò),通過(guò)get方式傳遞對參數長(cháng)度有限制,一般應該在255個(gè)字符之內,post應該能大一點(diǎn),你可以再試試能不能找到post錯誤的真正原因,找到原因的話(huà)希望能共享一下!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 16:12 jlzhou
感謝Teddy‘s share!

Net環(huán)境下基于A(yíng)jax的MVC方案,有沒(méi)有更新版呢?
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 16:21 Teddy‘s Knowledge Base
目前還沒(méi)有更新的版本,我的一個(gè)個(gè)人項目會(huì )完全基于該方案進(jìn)行開(kāi)發(fā),會(huì )在開(kāi)發(fā)的過(guò)程中不斷的完善這個(gè)方案,目標是能達到像
http://backbase.com/index.php
這個(gè)網(wǎng)站這樣的用戶(hù)體驗,由于我這個(gè)方案數據的填充構造基于UserControl,可以更多利用asp.net原有控件的數據綁定能力,代碼量應該能減少不少!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 16:39 jlzhou
調試不能通過(guò),只有一個(gè)loading...顯示就不動(dòng)了。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 16:52 Teddy‘s Knowledge Base
根據你調試機器的網(wǎng)速,loading的時(shí)間可能有長(cháng)短,只要能編譯通過(guò),就應該能正常運行的,我這兒在一個(gè)新的環(huán)境又試了下完全沒(méi)問(wèn)題,建議按如下步驟調試該范例:

1、下載并解壓縮到某路經(jīng)比如:d:\AjaxHelper
2、為AjaxHelper目錄建一個(gè)虛擬目錄AjaxHelper
3、用VS.Net打開(kāi)AjaxHelper.sln
4、編譯
5、將Default.aspx設為起始頁(yè)
6、按F5運行
7、頁(yè)面顯示loading...時(shí)請稍作等待,此時(shí)正在下載指定的網(wǎng)頁(yè)源碼
8、下載源碼完畢頁(yè)面會(huì )顯示源碼內容

  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 16:56 jlzhou
感謝指點(diǎn),我就是按照上述步驟做的,可是還是不行,我再研究一下。

再次感謝!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 20:10 jlzhou
又折騰了半天,死活都不行!我真笨!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 20:49 Teddy‘s Knowledge Base
不要氣餒,你可以單步調試一下,包括對js,整個(gè)工程除了js之外手寫(xiě)的有效的代碼可能還不到10行,應該比較容易能找出原因的。

或者說(shuō)說(shuō)看你主要在哪一步出錯,是編譯不通過(guò),還是運行時(shí)腳本報錯呢?
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 21:25 jlzhou
哪也沒(méi)報錯,就是瀏覽器只有loading顯示,然后再也沒(méi)有任何動(dòng)靜了。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 21:29 jlzhou
我剛剛修改了ajax.aspx的文件名,也不報錯,看來(lái)沒(méi)有callback來(lái)訪(fǎng)問(wèn)這個(gè)文件。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 21:31 jlzhou
基本鎖定是js的問(wèn)題。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 21:48 jlzhou
我的IE版本是6.0.2800.1106.xpsp2
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 21:53 Teddy‘s Knowledge Base
那確實(shí)比較奇怪,前面有位朋友也遇到過(guò)比較奇怪的問(wèn)題,你參考他說(shuō)的解決辦法試試,另外,你也可以看看默認情況下瀏覽default.aspx的ie的encoding是什么,可以試試encoding在gb2312和utf-8間切換試試。

另外在就是你可以在頁(yè)面的Updater函數前后加上try{}catch(ex){window.alert(ex)},看看是什么錯誤!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 22:10 jlzhou
還是不行,加上

try{Updater(‘AjaxTemplate/GetPageSrc‘, ‘view2‘, ‘url=http://www.smartprise.com‘);}catch(ex){window.alert(ex)}

也不報錯,就是loading沒(méi)完。

我的QQ是9842766
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 22:13 jlzhou
默認情況下瀏覽default.aspx的ie的encoding是utf8,試試encoding在gb2312和utf-8間切換,IE右上角的小窗口圖標動(dòng)個(gè)不停,IE窗口里什么都沒(méi)有。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-15 22:17 Teddy‘s Knowledge Base
建議你還是對js進(jìn)行下單步調試,這樣執行js過(guò)程中的錯誤都能被捕獲,需要先在ie的選項里開(kāi)啟腳本調試,然后再vs.net里面對js設斷點(diǎn)就可以了。不好意思,因馬上有點(diǎn)事要離開(kāi)現在不能和你qq交流,如果還解決不了,明天白天和你qq吧,不過(guò)我很少qq,一般只用msn。
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-16 09:06 藍色閃電
呵呵,原來(lái)就是JS+XmlHttp+.NET的組合!

用了這個(gè)技術(shù)很久,突然今天發(fā)現它有個(gè)新名字:Ajax,有意思!

上面的兄弟:
try{Updater(‘AjaxTemplate/GetPageSrc‘, ‘view2‘, ‘url=http://www.smartprise.com‘);}catch(ex){window.alert(ex)}
沒(méi)用的,訪(fǎng)問(wèn)不到頁(yè)面并不是JS代碼發(fā)生異常,catch不到錯誤的!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-16 10:19 Teddy‘s Knowledge Base
為AjaxHelper又寫(xiě)了點(diǎn)使用范例,請訪(fǎng)問(wèn)

http://www.cnblogs.com/teddyma/archive/2005/06/16/175298.html
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-19 11:48 microhf
好東西呀
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-20 11:26 Teddy‘s Knowledge Base
最近更新AjaxHelper0.4,新版本兼容0.3并新增支持Sps下的WebPart開(kāi)發(fā)
http://www.cnblogs.com/teddyma/archive/2005/06/19/176859.html

  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-06-30 13:18 tangle
調試成功,非常好用,感謝共享
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-07-03 09:58 思源
有發(fā)覺(jué)嗎?用Ajax做網(wǎng)站不能夠很好的被搜索引擎檢索,雖然是個(gè)很好的技術(shù)
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-07-03 11:29 Teddy‘s Knowledge Base
@思源:

是不是search egine friendly的問(wèn)題,其實(shí)看你的整個(gè)網(wǎng)站結構設計,比如,我可以通過(guò)site map和url rewrite重寫(xiě)的形式暴露整個(gè)站點(diǎn)的頁(yè)面結構給搜索引擎,完全可以達到需要的效果!
  

# re: .Net環(huán)境下基于A(yíng)jax的MVC方案 2005-07-03 12:53 思源
是的,不過(guò)覺(jué)得Ajax在OA或站點(diǎn)后臺方面,可以帶來(lái)不少好處,個(gè)人觀(guān)點(diǎn)
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MVC面試問(wèn)題與答案
ASP.NET MVC案例教程—第五篇:MVC整合Ajax
ASP.NET MVC的JavaScriptResult
學(xué)習VS2008
老菜鳥(niǎo)致青春,程序員應該選擇java 還是 c#
ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft A...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久