ASP.NET 常见问题
|
在提交的时候过程很长,为了防止用户再次点击而且为了界面友好可以用一个层遮住所有按钮再显示个提示信息,等服务器端处理完成再导航到本页(location.href='地址')就可以:
pageload里面这么写:this.Button1.Attributes.Add("onclick","document.getElementById('doing').style.visibility='visible';");
备注 Internet Explorer 5.5 或更高版本浏览器请求页时(或稍后),智能导航将通过执行下列功能提高用户对该页的操作能力: 消除导航导致的闪烁。
它最外边还是有一个frameset。你可以注意到与ajax的区别就是窗口底下多了个一闪而过的蓝色进度条(我真希望ie能有办法去掉这个)。其实很简单,几秒钟搞定!就是把你的页面的属性 smartNavigation 设置为 true
2遇到的问题: FinishOpacity:目标值. Style:1或2或3 StartX:任意值 StartY:任意值 例子1:filter:Alpha(Opacity="0",FinishOpacity="40",Style="2") 例子2:<div id="mymenu" style="filter:alpha(opacity=50);border:1px solid">(即半透明) 附常见滤镜: style的css设置 2005-5-5 11:54:18 语法:STYLE="filter:filtername(fparameter1,fparameter2...)}(Filtername为滤镜的名称,fparameter1、fparameter2等是滤镜的参数)
滤镜说明: 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:目标值. Style:1或2或3 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:1或0. 例子: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遇到的问题: 关于ArrayList、Ienumerator? 解决方法: 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 οnclick="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遇到的问题: 关于.net及sqlserver中的日期类型 解决方法: 例子: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
9遇到的问题: 关于脚本的调试 解决方法: 1调整IE选项--高级--取消“禁止脚本调试” 2直接运行你将要调试的aspx页面 3当页面呈现完成时,回到vs.net中,调试--窗口--运行文档,窗口右侧将出现当前IE中的aspx页面的名称,双击它,此时页面的html源文件将显示在vs.net的窗口中,这样就可以在html文件中设置断点。
0遇到的问题: 关于存储过程的调试 解决方法: 在查询分析器中展开左侧的对象浏览器(按F8,或“工具”--“对象浏览器”打开),展开存储过程,选择要调试的存储过程,右键,调试/debug 如果存储过程存在输入参数,则输入测试参数值,即可进行调试界面,F11单步 |
ASP.NET 常见问题
最新推荐文章于 2019-06-26 04:48:21 发布