.NET技术支持者

  博客园 :: 首页 :: 博问 :: 闪存 :: :: 联系 :: 订阅 订阅 :: 管理 ::

如何在类库中的类文件里使用Response,Request,Server,Session几种对象。我这里有如下方式,仅供参考: 
      首先我们要在类文件里引用using System.Web;
using System.Web.SesstionState;命名空间,然后是对这种对象的声明: 
       HttpSessionState Session; 
       HttpServerUtility Server; 
       HttpRequest Request; 
       HttpResponse Response; 

最后我们可以在构造函数里做如下处理: 
      
try 
      

            Session 
= ((System.Web.UI.Page)parent).Session; 
            Server 
= ((System.Web.UI.Page)parent).Server; 
            Request 
= ((System.Web.UI.Page)parent).Request; 
            Response 
= ((System.Web.UI.Page)parent).Response; 
      }
 
      
catch 
      

            Server 
= ((System.Web.UI.UserControl)parent).Server; 
            Session 
= ((System.Web.UI.UserControl)parent).Session; 
            Request 
= ((System.Web.UI.UserControl)parent).Request; 
            Response 
= ((System.Web.UI.UserControl)parent).Response; 
      }
 
以上做完,你就可以在类库里直接使用这几种对象了。 

返回历史页面onclick="history.back();return false;"
在提交的时候过程很长,为了防止用户再次点击而且为了界面友好可以用一个层遮住所有按钮再显示个提示信息,等服务器端处理完成再导航到本页(location.href='地址')就可以:

<div id="doing" runat="server" style="Z-INDEX: 12000; LEFT: 0px; VISIBILITY: hidden; WIDTH: 100%;  POSITION: absolute; TOP: 300px; HEIGHT: 100%">
                
<table width="100%" height="100%">
                    
<tr align="center" valign="middle">
                        
<td>
                            
<table width="169" class="font3" height="62" bgcolor="#6699ff" style="FILTER: Alpha(Opacity=75); WIDTH: 169px; HEIGHT: 62px">
                                
<tr align="center" valign="middle">
                                    
<td>页面提交中,请等待<br>
                                        Please wait
                                    
</td>
                                
</tr>
                            
</table>
                        
</td>
                    
</tr>
                
</table>
            
</div>


pageload里面这么写:this.Button1.Attributes.Add("onclick","document.getElementById('doing').style.visibility='visible';");
,等操作结束重定向了后页面重新加载一次,这个层也就消失了。。。


Page.SmartNavigation 属性
获取或设置指示是否启用智能导航的值

如果启用智能导航,则为 true;否则为 false

备注

在大多数情况下不要在代码中设置该属性。在 .aspx 文件的 @ Page 指令中将 SmartNavigation 属性设置为 true。请求该页时,动态生成的类将设置该属性。

Internet Explorer 5.5 或更高版本浏览器请求页时(或稍后),智能导航将通过执行下列功能提高用户对该页的操作能力:

  • 消除导航导致的闪烁。
  • 从一页移动到另一页时保持滚动位置。
  • 保持导航之间的元素焦点。
  • 在浏览器的历史记录中只保留最后一页的状态。

智能导航最适用于需要频繁回发但是其可是内容在返回时不会发生显著更改的 ASP.NET 页。在决定是否将该属性设置为 true 时,请仔细考虑这一点。

[C#] 
void Page_Load(Object sender, EventArgs e)
{
   
this.SmartNavigation = true;
}

void Button_Click(Object sender, EventArgs e)
{
   Label1.Text
="<b>The value of 'SmartNavigation' property is </b>" + "'" + this.SmartNavigation + "'";
}

它最外边还是有一个frameset。你可以注意到与ajax的区别就是窗口底下多了个一闪而过的蓝色进度条(我真希望ie能有办法去掉这个)。其实很简单,几秒钟搞定!就是把你的页面的属性 smartNavigation 设置为 true
1遇到的问题:
使用了验证控件,编译时提示“无法找到脚本库……”
解决方法:
由于更换了主目录路径,应将在wwwroot下的aspnet_client文件夹拷到新的目录下即可


 

2遇到的问题:
关于style中的alpha滤镜
解决方法:
滤镜说明:
Alpha:设置透明层次.
滤镜:alpha
语法:
STYLE="filter:Alpha(Opacity=opacity,FinishOpacity=finishopacity,Style=style,StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"
说明:
Opacity:起始值,取值为0-100,0为透明,100为原图.

FinishOpacity:目标值.

Style123

StartX:任意值

StartY:任意值

例子1filter:Alpha(Opacity="0",FinishOpacity="40",Style="2")

例子2<div id="mymenu" style="filter:alpha(opacity=50);border:1px solid">(即半透明)

附常见滤镜:

stylecss设置 2005-5-5 11:54:18

语法:STYLE="filter:filtername(fparameter1,fparameter2...)}(Filtername为滤镜的名称,fparameter1fparameter2等是滤镜的参数)

 

滤镜说明:

Alpha:设置透明层次.

blur:创建高速度移动效果,即模糊效果.

Chroma:制作专用颜色透明.

DropShadow:创建对象的固定影子.

FlipH:创建水平镜像图片.

FlipV:创建垂直镜像图片.

glow:加光辉在附近对象的边外.

gray:把图片灰度化.

invert:反色.

light:创建光源在对象上.

mask:创建透明掩膜在对象上.

shadow:创建偏移固定影子.

wave:波纹效果.

Xray:使对象变的像被x光照射一样.

 

1.滤镜:alpha

语法:

STYLE="filter:Alpha(Opacity=opacity,FinishOpacity=finishopacity,Style=style,

StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"

说明:

Opacity:起始值,取值为0-100,0为透明,100为原图.

FinishOpacity:目标值.

Style123

StartX:任 ?

StartY:任意值

例子:filter:Alpha(Opacity="0",FinishOpacity="40",Style="2")

 

2.滤镜:blur

语法:

STYLE="filter:Blur(Add=add,Direction=direction,Strength=strength)"

说明:

Add:一般为1,或0.

Direction:角度,0-315度,步长为45.

Strength:效果增长的数值,一般5即可.

例子:filter:Blur(Add="1",Direction="45",Strength="5")

 

3.滤镜:chroma

语法:

STYLE="filter:Chroma(Color=color)"

说明:

color:#rrggbb格式,任意.

例子:filter:Chroma(Color="#FFFFFF")

 

4.滤镜:DropShadow

语法:

STYLE="filter:DropShadow(Color=color,OffX=offX,OffY=offY,Positive=positive)"

说明:

Color:#rrggbb格式,任意.

Offx:X轴偏离值.

Offy:Y轴偏离值.

Positive:10.

例子:filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")

 

5.滤镜:FlipH

语法:

STYLE="filter:FlipH"

例子:filter:FlipH

 

6.滤镜:FlipV

语法:

STYLE="filter:FlipV"

例子:filter:FlipV

 

7.滤镜:Glow

语法:

STYLE="filter:Glow(Color=color,Strength=strength)"

说明:

Color:发光颜色.

Strength:强度(0-100)

例子:filter:Glow(Color="#6699CC",Strength="5")

 

8滤镜:Gray

语法:

STYLE="filter:Gray"

例子:filter:Gray

 

9.滤镜:Invert

语法:

STYLE="filter:Invert"

例子:filter:Invert

 

10.滤镜:Mask

语法:

STYLE="filter:Mask(Color=color)"

例子:filter:Mask(Color="#FFFFE0")

 

11.滤镜:Shadow

语法:

filter:Shadow(Color=color,Direction=direction)

说明:

Color:#rrggbb格式.

Direction:角度,0-315度,步长为45.

例子:filter:Shadow(Color="#6699CC",Direction="135")

 

12.滤镜:Wave

语法:

filter:Wave(Add=add,Freq=freq,LightStrength=strength,Phase=phase,Strength=strength)

说明:

Add:一般为1,或0.

Freq:变形值.

LightStrength:变形百分比.

Phase:角度变形百分比.

Strength:变形强度.

例子:filter:wave(Add="0",Phase="4",Freq="5",LightStrength="5",Strength="2")

 

13.滤镜:Xray

语法:

STYLE="filter:Xray"

例子:filter:Xray 

 

3遇到的问题:

关于ArrayListIenumerator

解决方法:

ArrayList a=new ArrayList();

              string s1="aaaaa";

              string s2="bbbbb";

              string s3="ccccc";

              int i1=1;

              int i2=2;

              int i3=3;

 

              a.Add(s1);

              a.Add(s2);

              a.Add(i1);

              a.Add(i2);   

              a.Add(i3);

              a.Add(s3);

 

              IEnumerator ie=a.GetEnumerator();

              while(ie.MoveNext())

              {

                   string s=ie.Current.ToString();

                   Response.Write(s+Environment.NewLine);

              }

(与直接对arraylist对象用下标访问或通过foreach访问有什么区别?)

 

4遇到的问题:

关于arraylist

解决方法:

. ArrayList 构造函数

 

1. public ArrayList(); 

    初始容量是新ArrayList的起始容量。ArrayList 的默认初始容量为16 如果添加到列表中的元素个数达到当前容量,则容量将自动增加一倍。

 

2. public ArrayList(ICollection);

    初始容量是新ArrayList 的起始容量。如果添加到列表中的元素个数达到当前容量,则容量将自动增加一倍。按照由ICollection IEnumerator 读取元素的顺序将这些元素复制到ArrayList 中。

 

3. public ArrayList(int);

    初始容量是新ArrayList 的起始容量。ArrayList 的默认初始容量为16。如果指定的初始容量为0,则使用默认的初始容量。如果添加到列表中的元素个数达到当前容量,则容量将自动增加一倍。因此,如果可以估计集合的大小,那么当指定初始容量后,将无需在向ArrayList 中添加元素时执行大量的大小调整操作。

 

. ArrayList 成员

 

1. 常用属性

Capacity:获取或设置ArrayList 可包含的元素数。

Count:获取 ArrayList中实际包含的元素数。

Item:获取或设置指定索引处的元素。在 C# 中,该属性为ArrayList类的索引器。

 

2.常用方法

Add:将对象添加到ArrayList的结尾处。

Clear:从ArrayList 中移除所有元素。

IndexOf:返回ArrayList 或它的一部分中某个值的第一个匹配项的从零开始的索引。

LastIndexOf:返回ArrayList或它的一部分中某个值的最后一个匹配项的从零开始的索引。

Insert:将元素插入ArrayList的指定索引处。

Remove:从ArrayList中移除特定对象的第一个匹配项。

RemoveAt:移除ArrayList的指定索引处的元素。

TrimToSize:将容量设置为ArrayList中元素的实际数量。

 

5遇到的问题:

关于动态修改html中的某些内容

解决方法:

例如,改变页面的title

1

                   <script language =javascript >

                            window.document.title =tl;

                   </script>

.cs中:

              string s="123456";

              Response.Write("<script language=javascript>var tl='"+ s +"'</script>");

 

2

                   <title><%=s%></title>

.cs中:

         public string s="123456";

使用protected修饰也行,但internal修饰则出错,???

 

3

                   <title><%=Method()%></title>

.cs中:

         public string Method()

         {

              return "123456";

         }

同二,使用internal修饰也不行???

 

6遇到的问题:

关于params关键字

解决方法:

         private void Page_Load(object sender, System.EventArgs e)

         {

              // 在此处放置用户代码以初始化页面

              string[] sArray=new string[3];

              sArray[0]="aaa";

              sArray[1]="bbb";

              sArray[2]="ccc";

 

              Method1(sArray);

//            Method1("aaa","bbb","ccc");      //error

 

              Method2(sArray);

              Method2("aaa","bbb","ccc");

 

         }

 

         private void Method1(string[] s)

         {

              string temp="";

              foreach(string e in s)

              {

                   temp+=e;

              }

              this.TextBox1.Text =temp;

         }

 

         private void Method2(params string[] s)

         {

              string temp="";

              foreach(string e in s)

              {

                   temp+=e;

              }

              this.TextBox2.Text =temp;

         }

 

7遇到的问题:

关于__doPostBack()方法?

解决方法:

页面一:

提供一个锚点:

<a onclick="javascript:window.open('WebForm2.aspx','_blank')">open webform2</a>

一个文本框,用于显示一些信息:

<asp:TextBox id="TextBox1" runat="server"></asp:TextBox>

一个隐藏的服务器button

<asp:Button id="Button1" runat="server" Text="Button" Visible="False"></asp:Button>

Button的后台事件为:

private void Button1_Click(object sender, System.EventArgs e)

{

     this.TextBox1.Text ="has click...";

}

页面二:

添加一个服务器按钮,添加事件:

private void Button1_Click(object sender, System.EventArgs e)

{

     string s="<script language=javascript>";

     s+="window.opener.__doPostBack('Button1','');";

     s+="</script>";

 

     this.Page.RegisterClientScriptBlock("a",s);

}

此时,在页面二中无法成功地触发页面一中的__doPostBack()事件,是由于在没有某些特定控件的时候,html文件中并不会产生__doPostBack()函数的javascript代码,所以在页面二中点击按钮时会提示“对象不支持此方法”:

<script language="javascript">

<!--

     function __doPostBack(eventTarget, eventArgument)

{

         var theform;

         if (window.navigator.appName.toLowerCase().indexOf("netscape") > -1) {

              theform = document.forms["Form1"];

         }

         else {

              theform = document.Form1;

         }

         theform.__EVENTTARGET.value = eventTarget.split("$").join(":");

         theform.__EVENTARGUMENT.value = eventArgument;

         theform.submit();

     }

// -->

</script>

要使用页面内容中产生以上代码,可以添加一个LinkButton控件(好像只有该控件可以??)

另外的方法是在Page_Load()加上下面方法:

this.Page.GetPostBackEventReference(Button1);

上面方法将触发产生__doPostBack()javascript代码,msdn中的解释是:

“获取对客户端脚本函数的引用,调用该函数将使用服务器发送回该页”

以上代码可以应用于在子窗口中修改数据,然后刷新父窗口的情况

另外,注意“__doPostBack()”,方法名中是两道下划线,并且区分大小写。

 

8遇到的问题:

关于.netsqlserver中的日期类型

解决方法:

例子:Northwind--employees--birthdate

this.TextBox1.Text =dr.GetDateTime(0).ToString();输出:1948-12-8 0:00:00

this.TextBox1.Text =dr[0].ToString();输出:1948-12-8 0:00:00

this.TextBox1.Text=dr.GetDateTime(0).ToShortDateString();输出:1948-12-8

this.TextBox1.Text=dr.GetDateTime(0).ToString("yyyy#mm#dd");输出:1948#00#08

  在装了vs2003以后 从新装了iis后需要注册asp.net 不然提示说不是asp.net
:\Documents and Settings\Administrator>C:\WINNT\Microsoft.NET\Framework\v1.1.43
2\aspnet_regiis -i
开始安装 ASP.NET (1.1.4322.0)。
已安装完 ASP.NET (1.1.4322.0)。

  9遇到的问题:

关于脚本的调试

解决方法:

1调整IE选项--高级--取消“禁止脚本调试”

2直接运行你将要调试的aspx页面

3当页面呈现完成时,回到vs.net中,调试--窗口--运行文档,窗口右侧将出现当前IE中的aspx页面的名称,双击它,此时页面的html源文件将显示在vs.net的窗口中,这样就可以在html文件中设置断点。

 

0遇到的问题:

关于存储过程的调试

解决方法:

在查询分析器中展开左侧的对象浏览器(按F8,或“工具”--“对象浏览器”打开),展开存储过程,选择要调试的存储过程,右键,调试/debug

如果存储过程存在输入参数,则输入测试参数值,即可进行调试界面,F11单步

<form action="http://www.baidu.com/baidu" target="_blank">
            
<div align="center">
                
<input name="tn" type="hidden" value="baidu"> <href="http://www.baidu.com/"><img src="http://img.baidu.com/search/img/baidulogo_clarity_80_29.gif" alt="Baidu" align="bottom"
                        border
="0"></a> <input type="text" name="word" size="30"> <input type="submit" value="百度搜索">
            
</div>
        
</form>
posted on 2005-12-04 10:44  LDAR泄漏检测与修复  阅读(1450)  评论(2编辑  收藏  举报