format Blog

给我个权限,我format你的硬盘.

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  44 随笔 :: 4 文章 :: 281 评论 :: 5 Trackbacks

MagicAjax.NET

     这是一个全新的开放源代码Ajax框架,比我用过的Ajax.NET要方便很多很多,不但需要学习的东西少,而且加入ajax技术后,你的网站甚至可以不用编译,只需要修改aspx文件就可以。这一切让我惊喜不已,所有赶快拿出来和大家分享。MagicAjax.NET支持.NET1.1和2.0,但是目前我下载到的源代码是需要.NET 2.0。

      MagicAjax.NET方便之处在于:他提供一个AjaxPanel的容器控件,需要无刷新更新的部分(控件,HTML代码...)放到这个Panel里面就可以; MagicAjax.NET也不需要在程序后台代码中添加什么东西,而且web.config的配置也不复杂。


      我做了个简单的测试程序。用Google的广告来看是否整个页面刷新。
       在页面上拖放一个AjaxPanel控件,然后把Botton和Label控件放到里面。如果把Botton放到Panel外面,那么会整页刷新。
      design.JPG
Botton控件的事件代码是:

1private void btnTime_Click(object sender, System.EventArgs e)
2        {
3            this.lblTime.Text=DateTime.Now.ToString();
4        }

最后的效果:
after.JPG

效果非常好!使用很方便。

后面给大家一个最基本的web.config配置文件。如果在.NET 1.1下,那么必须要有这个,然而程序无法找到嵌入其中的js资源。

 1<configuration>
 2    <configSections>
 3        <section name="magicAjax" 
 4                type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
 5    </configSections>
 6    
 7    <magicAjax
 8        outputCompareMode="HashCode"
 9        tracing="false">
10        <pageStore
11            mode="NoStore"
12            unloadStoredPage="false"
13            cacheTimeout="5"
14            maxConcurrentPages="5"
15            maxPagesLimitAlert="false"
16        />
17    </magicAjax>
18 <system.web>
19  <httpModules>
20             <add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" /> 
21     </httpModules>
22
23 </system.web>
24
25</configuration>


      大家赶快去他们网站下载。
http://www.magicajax.net/

posted on 2005-12-06 17:07 format 阅读(5385) 评论(26)  编辑 收藏 所属分类: .NET技术

评论

#1楼  2005-12-06 17:25 美文宝车      
去看看。
  回复  引用  查看    

#2楼  2005-12-06 17:55 lovecherry      
关注
  回复  引用  查看    

#3楼  2005-12-06 18:47 阿不      
看了DEMO,看起来好像不错,不过速度是不是有点慢?还是本来网速就慢的?
  回复  引用  查看    

#4楼  2005-12-06 23:39 ξσ Dicky σξ      
好东东
  回复  引用  查看    

#5楼  2005-12-07 07:47 维生素C.NET      
真的这么方便嘛? 看看先
  回复  引用  查看    

#6楼  2005-12-07 09:14 吴建明      
.net 2.0也必要上面的配置文件
  回复  引用  查看    

#7楼  2005-12-07 10:44 yzx110      
还是需要在aspx的页面上才行啊,不能放在html页面里。
有没有不需要aspx又很方便的?

  回复  引用  查看    

#8楼  2005-12-07 11:00 neuhawk      
很不错,但是有点bug
  回复  引用  查看    

非常不错,但有一点,好象.net2.0版本的不支持beta2
  回复  引用    

#10楼  2005-12-07 11:29 Boler Guo      
关注!
  回复  引用  查看    

很好
但是是不是可以用自己的js来调用后台的服务器方法恩?
  回复  引用  查看    

#12楼  2005-12-07 17:57 風語者·疾風      
好东西,Ajax的果实成熟了,可以吃了
  回复  引用  查看    

#13楼  2005-12-08 22:38 lovebird      
你好 我去官方网站看了一下 觉得不错 想实践一下 遇到这着个问题,在使用演示页面example.aspx时报如下错误:
Unable to find script library '/AjaxCallObject.js'. Copy the file to the required location, or change the 'scriptPath' setting at magicAjax section of web.config.

我本机的情况是:把/AjaxCallObject.js放到了虚拟目录下的script目录下
我在web.config中相应的配置如下

<configSections>
<section name="magicAjax"
type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
</configSections>

<magicAjax ScriptPath="~/script/"
outputCompareMode="HashCode"
tracing="false">
<pageStore
mode="NoStore"
unloadStoredPage="false"
cacheTimeout="5"
maxConcurrentPages="5"
maxPagesLimitAlert="false"
/>
</magicAjax>

不知道是配置错了 还是script放错位置了 请指教,谢谢!
  回复  引用  查看    

#14楼  2005-12-08 22:55 lovebird [未注册用户]
呵呵 又犯错误了 原来是下面的代码没有加:
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>

隐约记得加过了 贴上面代码的时候回头又看了一下 居然没有加上。。。
  回复  引用    

#15楼  2005-12-08 23:53 永恒瞬间      
晕了
怎么问题都出在我身上了
在单独一个项目里测试成功 让我欣喜不已 这么简单就应用了ajax 就决定把它应用到正在做的项目中
没想到把它按照已经做过好几遍的步骤配置到正在做的项目中后 又出现问题了 原来在其他项目中用的好好的东西 到了这个项目里面就不行了 点击一个事件后,就会卡在loding...那里 难道我有rpwt。。。 有没有人遇到跟我一样的问题?
  回复  引用  查看    

#16楼  2005-12-09 18:30 zhenxi [未注册用户]
为什么还是感觉到整个页面刷新了呢?
我在AjaxPanel里面放了一个Button1和Label1
在AjaxPanel外面也放了一个Label2, 我在Page_Load里面写的是Label2.Text += "Hello World!";在Button1的事件响应里面写的是Label1.Text = DateTime.Now.ToString();可是为什么每次触发Button1的事件的时候,总会更新Label2的值呢》》》
  回复  引用    

#17楼  2005-12-15 18:41 luxor [未注册用户]
没有啊。Label2没有更新
  回复  引用    

#18楼  2005-12-23 01:30 猪猪 [未注册用户]
请教:为什么我出现
Unable to find script library '/AjaxCallObject.js'
的错误?

我用.NET 1.1,VS.2003

看到出来的网页的源码里有一句
<script type="text/javascript" src="0.2.2.26746/AjaxCallObject.js.aspx"></script>

谁能点一下吗?
非常感谢!
  回复  引用    

#19楼  2005-12-26 17:21 onekey      
郁闷啊,我一用AjaxPanel cpu就用到99%,怎么回事?
  回复  引用  查看    

#20楼  2005-12-30 13:55 zx810903 [未注册用户]
大哥,这种例子用JS也可以轻松实现啊.
能写出有点技术含量的代码么?
比如说,无刷新对于数据库查询什么的.
  回复  引用    

#21楼  2006-01-03 21:21 neuhawk      
楼上,你可以自己试一下啊
  回复  引用  查看    

#22楼  2006-03-01 10:31 Leonic      
@猪猪: webconfig文件里:
<appSettings>
<!-- If CallBackScriptPath is not set in the appSettings, "/ajax/script" is used-->
<add key="CallBackScriptPath" value="/ajax/script" />
</appSettings>

@lovebird:webconfig里不支持 ~/ 格式。


这个东西使用起来真的很方便,基本不需要进行二次开发了。
但有时候不是很稳定,也许是我机器的问题。
  回复  引用  查看    

您好,看了您的文章後才知道有MagicAjax這東西,感謝您。
但可否請教您一個問題,我被這問題搞的一頭霧水,但討論區卻都沒人回答。

是這樣的;在畫面上有兩個listbox,
左邊的listbox在InitObj()加入0~9個item,
item可透過">>"與"<<"兩個按鈕來將項目在兩個listbox之間搬動,
但每次在按"<<"的時候,畫面卻都被重新初始化最初的畫面,
debug的時候,明明右邊的listbox有item,可是觀察Items.Count卻是0,
我把原碼貼如下:

我的aspx:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="MyCSWebApp.WebForm1" %>
<%@ Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>
<!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">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="新細明體"></FONT>
<ajax:AjaxPanel id="AjaxPanel" style="Z-INDEX: 101; LEFT: 32px; POSITION: absolute; TOP: 32px" runat="server"
Width="53.93%" Height="66.16%">
<FONT face="新細明體">
<asp:ListBox id="LstBoxFrom" runat="server" Height="264px" Width="88px" SelectionMode="Multiple"></asp:ListBox>
<asp:Button id="BtnRight" runat="server" Width="56px" Text=">>"></asp:Button>
<asp:Button id="BtnLeft" runat="server" Width="57px" Text="<<"></asp:Button>
<asp:ListBox id="LstBoxTo" runat="server" Height="262px" Width="88px" SelectionMode="Multiple"></asp:ListBox></FONT>
</ajax:AjaxPanel>
</form>
</body>
</HTML>


我的c#
void InitObj()
{
for(int i=0 ; i<10 ; i++)
{
ListItem item = new ListItem();
item.Value = i.ToString();
item.Text = i.ToString();
LstBoxFrom.Items.Add(item);
}
}

private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
InitObj();
}


private void BtnRight_Click(object sender, System.EventArgs e)
{
for (int i=0 ; i<LstBoxFrom.Items.Count ; i++)
{
if (LstBoxFrom.Items[i].Selected)
LstBoxTo.Items.Add(LstBoxFrom.Items[i]);
}

for (int i=0 ; i<LstBoxTo.Items.Count ; i++)
{
if (LstBoxTo.Items[i].Selected)
LstBoxFrom.Items.Remove(LstBoxTo.Items[i]);
}
}

private void BtnLeft_Click(object sender, System.EventArgs e)
{
for (int i=0 ; i<LstBoxTo.Items.Count ; i++)
{
if (LstBoxTo.Items[i].Selected)
LstBoxFrom.Items.Add(LstBoxTo.Items[i]);
}

for (int i=0 ; i<LstBoxFrom.Items.Count ; i++)
{
if (LstBoxFrom.Items[i].Selected)
LstBoxTo.Items.Remove(LstBoxFrom.Items[i]);
}
}

我的web.config:
<configuration>

<configSections>
<section name="magicAjax" type="MagicAjax.Configuration.MagicAjaxSectionHandler, MagicAjax"/>
</configSections>

<magicAjax tracing="false" scriptPath="~/AjaxScript">
<pageStore/>
</magicAjax>


<system.web>
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>
.....底下省略

另外,在專案中把AjaxCallObject.js以"加入現有項目"的方式加到專案中的AjaxScript目錄裡,
可是還是不work,暈倒....我是不是做錯了什麼步驟?怪異的是,若在同一個AjaxPanel裡面再放一組textbox + button,
讓button來改變textbox.text的值;這部分會正常,右上角有出現那個loading字樣,ie的progress bar不會refresh,
但就在同在一個AjaxPanel下,唯獨listbox不正常。

不好意思,佔了您大篇幅的版面
  回复  引用    

終於找到問題了,答案是安裝.Net 2003 service pack1
  回复  引用    

#25楼  2007-04-07 10:57 江在北 [未注册用户]
1.1版的包这个错
无法识别的配置节“configSections”
WEBCONFIG已经照你的配好了 不知道是怎么回事
  回复  引用    

#26楼  2008-03-08 13:26 Leon916      
来晚了,不过还是学习学习
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-12-06 17:12 编辑过


相关链接: