• 用JS + WCF打造轻量级WebPart


    自打.net2.0起,ms就推出了webPart功能,用它可以轻松开发出具有web2.0风格的个性化网站功能,比如拖放,定制标题栏等,但是WebPart的设计是属于重量级的,每次拖动都会引起页面回发,导致数据库读写以及大量的数据传输(即使在最外层套一个MajicAjax之类的,也是如此),另外WebPart在非IE标准浏览器上有些功能也不能正常使用。而网上流传的众多JS实现的特效功能中,已经有很多不错的JS源码,其实我们只要结合.net的功能修改一下,就能达到类似WebPart的功能,而且这种实现完全是轻量级的。


    先来看下http://www.jscode.cn/jave_page/300804727.htm这上面的拖放特效(muxrwc兄的作品,博客地址http://blog.csdn.net/muxrwc),这上面已经实现得很不错的,布局的保存是用cookie实现的,我们把它修改为利用数据库保存(主要思路就是保存布局时把cookie字符串存到数据库中,加载时从数据库里取出数据初始化),修改后的演示效果地址为http://ext.cneds.net(随时可能会被停掉,呵呵)

    1.数据库结构:
    (1)布局表T_LayOut

    CREATE TABLE [dbo].[T_LayOut](
     [F_ID] [int] IDENTITY(1,1) NOT NULL,
     [F_LayOut] [nvarchar](max) COLLATE Chinese_PRC_CI_AS NOT NULL,
     CONSTRAINT [PK_T_LayOut] PRIMARY KEY CLUSTERED
    (
     [F_ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]


    (2)新闻表T_News

     CREATE TABLE [dbo].[T_News](
     [ID] [int] IDENTITY(1,1) NOT NULL,
     [Title] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,
     CONSTRAINT [PK_T_News] PRIMARY KEY CLUSTERED
    (
     [ID] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]

    2.WCF部分
    (1)新建一个启用了Ajax的WCF:MyData.svc
    svc文件中,修改为
    <%@ ServiceHost Language="C#" Debug="true" Service="GetData" CodeBehind="~/App_Code/GetData.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

    web.config中手动修改节点,参考以下:
    <behaviors>
       <endpointBehaviors>
        <behavior name="GetDataAspNetAjaxBehavior">
         <!--<enableWebScript/>-->                   
        </behavior>
       </endpointBehaviors>
      </behaviors>

    (2)新建几个方法:

    Code


    3.JS部分

    (1)页面上增加一个按钮
    <a id="Save_CDrag" href="javascript:void(0);" style="display:none">[保存布局]</a>

    (2)对应的增加处理的js函数

    Code

    大意:利用CDrag扩展的Ajax功能,向WCF/GetData.svc/SaveLayOutById提交cookie数据写到数据库,再根据返回值给出提示

    (3)页面初始加载函数修改

    Code

    同样,也是利用Ajax来加载布局数据

    4.源代码下载:
    http://ext.cneds.net/src/dragdrop.rar (要下载的抓紧,公司的域名临时拿来用的,随时可能会停掉)

    转载请注明来自菩提树下的杨过http://www.cnblogs.com/yjmyzz/archive/2008/09/20/1294753.html

    后记:
    其实本文没有什么特殊的技术含量,就是WCF与AJAX的常规应用,大家回去多演练几遍,自然也就熟能生巧了,其实感觉WCF的使用到不算很复杂,JS才是考验web应用真功夫的地方(特别是web 2.0的网站).

    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Scrapy
    关于函数名称和库函数名称冲突的故事
    Hibernate的一级缓存
    spring-mvc 与 openid4java
    openid4java 使用记录[转载]
    Linux定时任务Crontab详解_定时备份
    Spring的线程池ThreadPoolTaskExecutor使用案例
    BZOJ4275 : [ONTAK2015]Badania naukowe
    BZOJ4137 : [FJOI2015]火星商店问题
    BZOJ2832 : 宅男小C
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1294753.html
Copyright © 2020-2023  润新知