Microsoft ASP.NET Futures (July 2007)中History在客户端的使用(即不必安装ASP.NET Futures)

简介: Microsoft ASP.NET Futures (July 2007)中有一个新的控件 “History”可以在Ajax中使用浏览器上的前进、后退按钮,但我们的主机上有时不必因为这一个功能就安一个Microsoft ASP.
Microsoft ASP.NET Futures (July 2007)中有一个新的控件 “History”可以在Ajax中使用浏览器上的前进、后退按钮,但我们的主机上有时不必因为这一个功能就安一个Microsoft ASP.NET Futures,它版本更新很快,而且有时候,服务器提供者也未必愿意进行安装,而开发者又想有让用户有更好体验,那怎么办呢,我们先从基本的使用入手 ,我们再一步步将其提取为客户端可以使用的代码

它的用法在官方网站上已经给出
官方示例(服务器端)
http://quickstarts.asp.net/Futures/ajax/samples/history1.aspx
官居方源代码
http://quickstarts.asp.net/Futures/util/srcview.aspx?path=~/ajax/samples/history1.src

官居方示例(客户端使用,但仍未脱离Microsoft ASP.NET Futures)
http://quickstarts.asp.net/Futures/ajax/samples/history2.aspx
源代码
http://quickstarts.asp.net/Futures/util/srcview.aspx?path=~/ajax/samples/history2.src
其 实上面代码引用的是PreviewScript.js文件,这个可以在X\Program Files\Microsoft ASP.NET\ASP.NET Futures July 2007\v1.2.61025\ScriptLibrary\Microsoft.Web.Preview\1.2.61025.0中找到

在客户端使用它是最理想的情况,可且的确,用它自给的PreviewScript.js(145K)文件也是有点过大了
所以经过精简,我得到了一个小的精简版本,未压缩的情况下只有16K,压缩后估计在3K上下
http://dl2.csdn.net/down4/20070919/19082247681.js

但发现此版本在FF下工作正常,而IE下却有问题,经过反复研究,发现IE下必须添加一个Iframe来保存历史记录

于是有了以下Js段
function  isIE(){  // ie? 
     if  (window.navigator.userAgent.indexOf( " MSIE " ) >= 1
        
return   true
    
else  
        
return   false
}
这是来判断是否是IE
function  InitHistory(){
    
if (isIE){ // Ie的情况下,要通过iframe来完成
     var  i  =  document.createElement( " <iframe id="__historyFrame" style='display:none;' src='/Template/History.htm' scrolling='no' frameborder='0' /> " );
    
var  d = $get( " extendDiv6 " );
    d.innerHTML
= i;
    }
    Sys.Application.add_init(
function () {
          
var  h  =  Sys.Application.get_history();
          h.setServerId(
" History1 " " History1 " );
    })
}

动态添加一个iframe(注意ID一定是 __historyFrame

下面是页面完整代码 basic.js即为上面两段代码

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
< head  runat ="server" >
    
< title > 无标题页 </ title >
    
< script  type ="text/javascript" >
            
function  pageLoad() {
            $addHandler($get(
" clientButton1 " ),  " click " , clientClick);
             $addHandler($get(
" clientButton2 " ),  " click " , clientClick);
        }
        
function  pageNavigate(sender, args) {
            
var  val  =  args.get_state().pageClientState  ||   0 ;
            $get(
" div2 " ).innerHTML  =  val;
        }
        
        
function  clientClick(e) {
            
var  val  =  parseInt(e.target.value);
            $get(
" div2 " ).innerHTML  =  val;
            Sys.Application.get_history().addHistoryPoint({pageClientState: val});
       }
    
</ script >
</ head >
< body >
    
< script  type ="text/javascript"  src ="JavaScript/MicrosoftAjax.js" ></ script >
< script  type ="text/javascript"  src ="JavaScript/Basic.js" ></ script >
< script  type ="text/javascript"  src ="JavaScript/Preview/history.js" ></ script >
< div  id ="div2" ></ div >
< form  id ="form1" >
< href ="#123"  id ="permalink" > Permalink </ a >
        
< input  id ="clientButton1"  type ="button"  value ="1"   />
        
< input  id ="clientButton2"  type ="button"  value ="2"   />
<div id="
extendDiv6 " style="display:none"></div>
     </ form >
    
< script  type ="text/javascript" >
InitHistory();
</ script >
</ body >
</ html >
这样就可以实现在Ajax里使用前进后退按钮而不必安装Microsoft ASP.NET Futures也能用History了

注:History 还不支持Opera希望在下一版本中可以支持
http://blog.csdn.net/chsword/archive/2007/09/19/1790664.aspx

目录
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
盘点72个ASP.NET Core源码Net爱好者不容错过
盘点72个ASP.NET Core源码Net爱好者不容错过
102 0
|
2月前
|
开发框架 .NET
ASP.NET Core NET7 增加session的方法
ASP.NET Core NET7 增加session的方法
55 0
|
1月前
|
Linux C# C++
【.NET Developer】创建ASP.NET Core Blazor项目并打包为Linux镜像发布到Azure应用服务
本文介绍了如何使用VS2019和.NET框架创建一个Blazor应用,并将其部署到Azure应用服务。首先,Blazor是一个使用C#而非JavaScript构建交互式Web UI的框架,支持共享服务器和客户端应用逻辑,以及与Docker和Azure集成。任务包括创建Blazor项目,配置Dockerfile为Linux容器,本地测试,发布到Azure Container Registry (ACR),然后在Azure App Service for Container上部署。在部署过程中,需确保Docker设置正确,开启ACR的Admin访问权限,并监控镜像拉取和容器启动日志。
|
2月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
162 5
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
2月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
159 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
104 0
|
2月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
43 0
|
11月前
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
137 0
|
12月前
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
137 0