标签存档: DinnerNow

502 查看

DinnerNow.Net中的AJAX应用体味(3)

现在再让我们言归正传,再来看看Search.aspx文件的所有代码,由于此代码很长,我仍然采取直接利用注释说明的方法进行讲解。   Code<%@ Page Language="C#" MasterPageFile="Main.master" AutoEventWireup="true" Inherits="Search"   2    Title="DinnerNow.net" CodeBehind="Search.aspx.cs" %>   3<%@ Register Src="LoginControl.ascx" TagName="LoginControl" TagPrefix="uc2" %>   4<%@ Register Src="SearchBar.ascx" TagName="SearchBar" TagPrefix="uc1" %>   5<asp:Content ID="Content1" ContentPlaceHolderID="LoginPlaceHolder" runat="Server">   6    <uc2:LoginControl ID="LoginControl1" runat="server"></uc2:LoginControl>   7</asp:Content>   8<asp:Content ID="SearchBarContent" ContentPlaceHolderID="SearchBarPlaceHolder" runat="Server">   9    <uc1:SearchBar ID="SearchBar1" runat="server"></uc1:SearchBar>  10</asp:Content>  11<asp:Content ID="Content3" ContentPlaceHolderID="MainContentPlaceHolder" runat="Server">  12<!—对于这个已经是第二次看到了,为调用WCF服务做准备–>      13<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">  14        <Services>  15            <asp:ServiceReference Path="~/Services/ShoppingCartService.svc" />  16        </Services>  17    </asp:ScriptManagerProxy>  18  19  20    <script type="text/javascript">  21        //这个函数是用来处理回传信息的,这个是asp.net ajax框架里面的pageload(),在页面加载的时候自动运行  22        function pageLoad()  23        {  24            try  25            {  26                var PARAMETERS = {};  27                //这是一种在JavaScript语言中定义函数的方法,函数名就是PARMETERS.load,在下面有调用,这里不运行  28                PARAMETERS.load = function() {  29                    PARAMETERS.map = {};  30                    //下面的程序提取了请求的url地址,并且利用JavaScript中的replace方法,按照正则表达式进行操作。  31                    //对于这个命令,我也没有搞得十分明白,期待大牛能不吝赐教,我只是在FireBug中进行调试得到了他的运行规律,  32                    //这个程序中会一连运行四次,就好像加了个循环,运行的对象分别是PostalCode,MenuType等等,就是设置的那四个搜索  33//对应的s、k、q、v数值分别为,以PostalCode为例,s=”PostalCode=98101&”,k=”PostalCode”,q=”=98101”,v=”98101”,以此类推  34//其他的,只是将这里的PostalCode换成如MenuType等等  35window.location.search.substring(1).replace(/([^&=]+)([=]([^&]*))?(&|$)/g,function(s,k,q,v){  36                        if (undefined === PARAMETERS.map[k]) {  37                            PARAMETERS.map[k] = [];  38                        } …

继续阅读 »

505 查看

DinnerNow.Net中的AJAX应用体味(2)

继续上一篇,接下来让我们看一下,DinnerNow的search.aspx文件的源代码   Code<%@ Page Language="C#" MasterPageFile="Main.master" AutoEventWireup="true" Inherits="Search"   2    Title="DinnerNow.net" CodeBehind="Search.aspx.cs" %>   3<%@ Register Src="LoginControl.ascx" TagName="LoginControl" TagPrefix="uc2" %>   4<%@ Register Src="SearchBar.ascx" TagName="SearchBar" TagPrefix="uc1" %>   5<asp:Content ID="Content1" ContentPlaceHolderID="LoginPlaceHolder" runat="Server">   6    <uc2:LoginControl ID="LoginControl1" runat="server"></uc2:LoginControl>   7</asp:Content>   8<asp:Content ID="SearchBarContent" ContentPlaceHolderID="SearchBarPlaceHolder" runat="Server">   9    <uc1:SearchBar ID="SearchBar1" runat="server"></uc1:SearchBar>  10</asp:Content>  11<asp:Content ID="Content3" ContentPlaceHolderID="MainContentPlaceHolder" runat="Server">  12    <asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">  13        <Services>  14            <asp:ServiceReference Path="~/Services/ShoppingCartService.svc" />  15        </Services>  16    </asp:ScriptManagerProxy>  17  18  19    <script type="text/javascript">  20        //这个函数是用来处理回传信息的,这个是asp.net ajax框架里面的pageload(),在页面加载的时候自动运行  21        function pageLoad()  22        {  23            try  24            {  25                //定义一个对象  26                var PARAMETERS = {};  27                //这是一种在JavaScript语言中定义函数的方法,函数名就是PARMETERS.load,在下面有调用,这里不运行  28                PARAMETERS.load = function() {  29                    PARAMETERS.map = {};  30                    //这里表示提出请求的url地址,并且按照正则表达式将url进行替换,从形式上看,应该只是把传参的标记等等替换点,  31                    //把前面正则表达式获取的值作为参数传给后面的function中的参数,这里有很强的对应关系,是根据searchbar.ascx里面的程序对应的  32                    //[^&=],表示匹配除&=之外的任何字符  33                    window.location.search.substring(1).replace(/([^&=]+)([=]([^&]*))?(&|$)/g,function(s,k,q,v){  34                        if (undefined === PARAMETERS.map[k]) {  35                            PARAMETERS.map[k] = [];  36                        }  37                        PARAMETERS.map[k].push(decodeURIComponent(v));  38                    }); …

继续阅读 »

509 查看

DinnerNow.Net中的AJAX应用体味(1)

DinnerNow是微软的一个demo,其集成了WPF,WCF,WF,WCS,同时对于数据库的操作又用了Linq,外加极强的用户体验,也将AJAX应用发挥到了一定的高度。虽然的确有点大杂烩之嫌,但是值得学习的地方还是很多的。在篇博文中,我主要会分析一下DinnerNow中的AJAX应用。 对于一些基本的DinnerNow安装,极其一些大致的框架结构等,已经有前人介绍过了(地址http://www.cnblogs.com/daizhj/category/136637.html) 。这里我主要针对一些主要的页面进行一下AJAX应用分析。 在DinnerNow最主要的页面应该是Search.aspx页面,在这个页面中完成了,搜索,点餐等等功能。下面是其实际的操作演示截图: 刚进入搜索页,选择餐厅的页面  选择了餐厅后出现的页面  当把鼠标放到图标上,触发特定的hover时候的样式  进行选择在左边生成了购物单。 这些过程都发生在同一个页面中,期间没有发生过任何页面跳转,神奇吧(可能是我太落伍,至少我刚看到觉得太强了。。- -),感觉上非常爽! 仔细分析其代码,不难发现其实其主要使用了大量AJAX应用,而在这里微软也不忘体现下新的WCF框架,利用WCF,构建了一个又一个的AJAX应用,然后再利用回传得到的数据,用JavaScript代码“画”出了现在的各种显示界面。 似乎有点困倦了,在下一篇中,会进行更加细致的页面代码分析。在进行之前,如果感兴趣的朋友,希望能先本地模拟下DinnerNow这个项目。因为在DinnerNow项目中,由于AJAX的大量应用,页面的代码量还是比较大的,如果对功能没有较好的把握的话,很容易混淆功能的。 今天先到这里了,对不住大家,太困了。。。。

无觅相关文章插件,快速提升流量