巧用XML+XSLT+CSS+JQuery创建Asp.Net网站(二)

原创|其它|编辑:郝浩|2009-07-27 14:01:14.000|阅读 722 次

概述:时至今日,使用这种方案建站的人依然寥寥无几,大家还都在抱着Web标准化不撒手,其实Web标准化只是将表现(Css)分离了出来,而数据和结构仍然混杂在一起,它绝对不是我们最终的归宿,它只是一个过渡品。

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  添加一个CSS文件,命名为Style.css,输入以下代码:

   body
  {
  background-color: Silver;
  }
  h1
  {
  color: Gray;
  }
  a
  {
  color:White;
  margin-right:6px;
  }

  编译并运行,即可看到输出的数据:

  查看其源代码:

  用户访问不同页面时,只有这些XML代码会被多次下载,其他客户端的文件都只需下载一次,大大节省了服务器网络资源。

  由于此前在ashx中编写了支持Url参数查询的代码,我们可以通过设置max参数来决定显示的最大数据条目数:

      输出部分至此就完成了,接下来是输入部分:

  导入JQuery代码jquery-1.3.2.js到项目中。

  添加一个JS文件,命名为Post.js,输入以下代码:


 /// 
  $(function() {
  $("#PostName").click(function() {
  $.post("./webservice.asmx/AddName", { "Name": $("#Name").attr("value") }, function() { location.reload(); })
  });
  }
  );


  可以看到,通过JQuery在JS代码文件中为按钮注册处理函数非常简单,这样就将交互部分完全分离开来。

  添加一个WebService,命名为WebService.asmx,在其后台代码文件WebService.cs中输入如下代码:


 using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Web;
  using System.Web.Services;
  using System.Data.OleDb;
  /// 
  ///WebService 的摘要说明
  /// 
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  //若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
  // [System.Web.Script.Services.ScriptService]
  public class WebService : System.Web.Services.WebService {
  public WebService () {
  //如果使用设计的组件,请取消注释以下行
  //InitializeComponent();
  }
  [WebMethod(Description="添加一个新的用户名")]
  public void AddName(string Name) {
  OleDbConnection c = new OleDbConnection(string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=""{0}"";Persist Security Info=True", HttpContext.Current.Server.MapPath(@"~\App_Data\Database.mdb")));
  c.Open();
  new OleDbCommand(string.Format("INSERT INTO [User] VALUES ('{0}','{1}')",Guid.NewGuid(),Name),c).ExecuteNonQuery();
  c.Close();
  }
  }

  编译并执行,测试提交数据:

  提交成功后会刷新页面(JS里的回调函数所为),刷新后的输出数据:

  此范例完成,解决方案资源管理器中显示的目录结构如下:

  可预见的问题

  一定要用JQuery吗?

  不,只是方便而已,其他框架或自写JS也都可以实现。

  我的网站需要侧边栏显示一些热门文章排行之类的东西,该怎么实现呢?

  可以通过Ajax的方式,配合WebService异步获取数据,但这样的话搜索引擎没法收录这些数据。

  也可以将这些数据直接写在XML里,但这样的话又会造成冗余。

  比较妥当的方法是将XSLT也改为由ashx处理程序动态生成,在里面写入这些数据,但这样会增加服务器负荷,注意设好缓存应该影响不大,另外的副作用就是使后台开发人员和设计师又亲密接触了。

  怎么使用Session?怎么使用Membership?

  我们的XML文件是使用ashx处理的,实质上它和aspx没多大区别,可以通过HttpContext.Current.Session访问到Session,要干什么都可以在里面干了。如果要由客户端改变Session的值,只要通过WebService就可以了。

  使用Membership也是同样道理,只不过少了那些登录控件什么的,你必须手动编写代码来控制了。

  结语

  XML是XHtml的终极目标,虽然现在将XML用于网站开发或许还不够成熟,但是应该距成熟不远了,Ajax的诞生进一步奠定了前往XML的路,这路必定会越来越好走的。

  我承认,我喜欢研究一些非主流的东西=。=,此前还研究过用XAML做网页,HOHO,也许RIA才是未来的王者也说不定。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:IT专家网

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP