Response.AddHeader使用实例收集

No Comments
ASP.Net(ASP), Web开发

文件下载,指定默认名
程序代码

Response.AddHeader(“content-type”,”application/x-msdownload”);
Response.AddHeader(“Content-Disposition”,”attachment;filename=要下载的文件名.ZIP”);

刷新页面
程序代码

Response.AddHeader “REFRESH”, “60;URL=newpath/newpage.asp”

等同于客户机端<META>元素:
程序代码

<meta http-equiv=”REFRESH”,”60;URL=newpath/newpage.asp”>

页面转向
程序代码

Response.Status = “302 Object Moved”
Response.Addheader “Location”, “newpath/newpage.asp”

等同于使用Response.Redirect方法:
程序代码

Response.Redirect “newpath/newpage.asp”

强制浏览器显示一个用户名/口令对话框
程序代码

Response.Status= “401 Unauthorized”
Response.Addheader “WWW-Authenticate”, “BASIC”

如何让网页不缓冲
程序代码

Response.Expires = 0 Response.ExpiresAbsolute = Now() – 1
Response.Addheader “pragma”,”no-cache”
Response.Addheader “cache-control”,”private”
Response.CacheControl = “no-cache”

———————————————————————————————————-

一开始的时候我自己在一个山洞里,里面很多的人

No Comments
PHP开发

一开始的时候我自己在一个山洞里,里面很多的人
山洞里都是水,人们都站在一个个的石头上。

我就站在那里,看着水浸湿我的脚,
我就一直盯着我的脚看,看到我的脚裂开了,里面的肉渗出水。。
再一抬头,我发现自己在一个半地下室里,就站在窗口的地方
地下室里面也都是水,墙壁被斧子砍过,从裂缝里向外渗水
阴暗而潮湿。

我从窗口看到有人走过来
这时候,身后突然有个人出现,告诉我说我必须要跑

我就跑出去,外面有一片空地,中间有个小木屋,边上还有一些人在做着什么
我跑进小木屋,里面是一个蹦床,我努力的在里面保持平衡不被那个人发现。

我跑出去的时候是裸体的,我拿着衣服,在小木屋里面穿

之后我发现自己走在一个校园里,我不认识的校园。
在学校里面的路边我看到了自己之前所在的那个地下室。
天空在下雨,人们在议论着关于那个地下室,说地下室有很多的秘密

我在人群里就感觉自己恶心,想吐
找洗手间,呕吐物就从喉咙里直接喷出来
弄得到处都是

我再回到人群里的时候,看到校长顺着那条路向前走,
不知道他去哪里,但是很多人都跟着他,
他说自己要解决这件事情

走着走着边上就没有房子了
我又开始恶心,只找到一个已经填得快要平了的公共厕所
我就对着那片洼地吐,呕吐物满是那片洼地

Continue Reading »

推荐一个让JavaScript代码排版得更好看的网站

No Comments
DHTML(html/js/css), Web开发

比VS2008排版JavaScript的功能好用多了。

http://jsbeautifier.org/,这是老外的一个在线排版JavaScript的服务。

FF下浮动元素后margin-top问题

No Comments
DHTML(html/js/css), Web开发

有两种情况

(一)margin-top失效

先看下面代码:

<div>
<div>float:left</div>
<div>clear:both; margin-top:20px;</div>
</div>

两个层box1和box2,box1具有浮动属性,box2没有,这时候设置box2的上边距 margin-top没有效果。

解决办法:

1. box1与box2之间增加一层”<div style=”clear:both;”></div>”
2. box2增加float属性

(二)子元素设置margin-top作用于父容器

<div style=”height:100px;background:red;”>
<div>clear:both; margin-top:20px;height:50px;width:500px;background:#000;</div>
</div>

当给box2设置margin-top时,在FF下仅作用于父容器。

解决办法:

1.给父容器box加overflow:hidden;属性
2.给父容器box加border除none以外的属性
3.用父容器box的padding-top代替子元素的margin-top

参考:

浮动元素后非浮动元素的margin的处理,可以看这里
http://www.w3.org/TR/2008/REC-CSS2-20080411/visuren.html#floats

The following example illustrates the use of the ‘clear’ property to prevent content from flowing next to a float.

Example(s):

Assuming a rule such as this:

P { clear: left }

formatting might look like this:

Image showing a floating image and the effect of 'clear: left' on the two paragraphs. [D]

Both paragraphs have set ‘clear: left’, which causes the second paragraph to be “pushed down” to a position below the float — its top margin expands to accomplish this (see the ‘clear’ property).

IIS7.0 (win2008/win7) HTTP 错误 404 页面的设置问题

No Comments
System(系统相关), Web开发

404页在网站的作用是当浏览者访问网页为空时,网站会自动转向404页,意义就是告诉访客,此页找不到。404页的原因可能是因为网页不存在或者更改删除而造成,在网站运营中,经常会因为内容整理,网页改版,造成原因的网页删除,丢失等,采用跳转404页能增加用户体验。

404页如何定义设置呢?笔者最近在IIS7.0 (win2008) 下遇到了一点小麻烦。

本来以为只要设置好了404页面的地址就可以了,如下图所示:

HTTP 错误 404 页面

其实还有一个更重要的步骤,就是“编辑功能设置…”这个选项,如下图所示:

HTTP 错误 404 页面

打开后默认的选项是“详细错误”,此处必须改为“自定义错误页”,这样刚才的设置才会有效。

其他的问题网上能够找到很多答案。比方该是静态文件,还是执行URL,或者302重定向。还有这个404页面的代码应该注意一些什么,该如何书写等等。

Internet Explorer Developer Toolbar 最终正式版

1 Comment
DHTML(html/js/css), Web开发

File Name: IEDevToolBarSetup.msi
Size: 626 KB
Version: 1.00.2189.0
Date Published: 6/7/2010
Language: English

在经历了一年半的测试期之后,微软周四正式发布了其IE Developer Toolbar最终正式版,支持IE6/7。微软开发者工具条可以让开发人员更为方便的分析网页结构,调整包括CSS在内的各种特定元素,帮助开发者更好地创建Web应用。

微软此次发布的1.0版相较Beta 3测试版并无新鲜元素加入,按照微软的说法,1.0版本主要改善了可靠性更适合作为一个正式版本来发布。

IE Developer Toolbar 特性如下:

-浏览和修改Web页的文档对象模型(DOM)。
-通过多种技术方式定位、选定Web页上的特定元素。
-禁止或激活IE设置。
-查看HTML对象的类名、ID,以及类似链接路径、tab顺序、快捷键等细节。
-描绘表格、单元格、图片或选定标签的轮廓。
-显示图片象素、大小、路径、替代文字等。
-即时重定义浏览器窗口大小到800×600或自定义大小。
-清空浏览器缓存和cookie,被清除项可从所有对象或给定域中选择。
-直接访问关联W3C规范参考、IE开发组blog或其他来源。
-显示设计时标尺,帮助对齐对象。

官方网站地址:http://www.microsoft.com/download/en/details.aspx?id=18359

解析并验证IE6及之前版本的“!important”BUG

No Comments
DHTML(html/js/css)

之前在某个前端技术群中与高手讨论“!important是否为IE BUG,怎样设计示例进行验证”的问题。当时我举的示例是引用网上前辈的例子:

#test {
color
:red !important;/*IE7、FF、OP等显示红色文字*/
color
:green;/*IE6显示绿色文字*/
}

当时被驳回,理由是这个示例没有说服力。后来自己想想,确实,这个例子应该只能算是一个特例,是一种表面现象,而要说服别人相信你的观点,就必须说出实质的东西。最近再次研究CSS特殊性、继承和层叠等技术,现在的理解应该更进一步了吧,至少我是把自己给说服了——!important 确实是IE BUG!

为了更好地说明实质性的原理,有必要真正了解CSS重要性(!important)。当然,要真正说明清楚还必须了解特殊性、继承和层叠等,但这些不是本文叙述的范围。

在CSS优先级规则中,!important 处于最高的优先级,其权重之高优先于内联样式。了解CSS特殊性的同仁应该非常清楚,内联样式具有至高的优先级(优先级为1,0,0,0,ID选择器的优先级次之:0,1,0,0),但碰到 !important 的时候,内联样式要略逊一筹(这里假设内联样式中没有设置!important)。举个例子:

span {color:gray !important;}

以上样式应用到以下的结构:

<span style=”color:blue;”>我会显示为什么颜色呢?</span>

经验证,文本‘我会显示为什么颜色呢?’将在浏览器(包括IE6)中显示为灰色(gray)。这个结果说明,浏览器(包括IE6)都能够正常解析 !important 。

然而,当我们稍稍改变一下样式表:

span {
color
:gray !important;/*IE6将不会将文本显示为灰色(gray)*/
color
:red;
}

应用了以上样式表之后,文本将会显示为什么颜色呢??经验证,IE7、FF、OP均依旧显示为灰色(color:gray),而IE6则显示为蓝色(color:blue)!

为什么会出现这种结果呢?BUG!!

真的是BUG吗?让我在修改一下样式表:

span {
color
:gray !important;/*IE6将依旧不会解析该规则*/
padding
:8px;
line-height
:25px;
vertical-align
:middle;
color
:red;
}

我在两个color属性之间随意添加几条规则,结果与没有那几条规则的结果是完全一样的,即,IE6将文本显示为蓝色(color:blue)。

好吧,如果以上的改动不能说明实质性的问题,那么我再次修改了样式表:

span {
color
:gray !important;/*嘿,IE6终于‘看到’!important了*/
}
span
{
color
:red;
}

以上规则,如果没有 !important ,则根据层叠规则,color:red 会将 color:gray 覆盖掉,而内联样式 color:blue 再将 color:red 覆盖掉——但是有了 !important 之后,一切都必须因此而‘改观’——浏览器(包括IE6)将文本显示为灰色(color:gray !important)!

综上所述,!important 是能够被IE6解析了,而之所以会碰到以上IE6不能解析 !important 的情况,是因为将两个相同的规则编入同一个规则分组(有!important的规则在前)时就构成了IE6的BUG

参考资料:《CSS权威指南:第三版》 Eric A.Meyer著

日期表达函数和语句:SQL函数

No Comments
SQL, Web开发

1. 当前系统日期、时间
select GetDate()

2. DateAdd 在向指定日期加上一段时间的基础上,返回新的 datetime 值
例如:向日期加上2天
select DateAdd(day,2,’2004-10-15′) –返回:2004-10-17 00:00:00.000

3. DateDiff 返回跨两个指定日期的日期和时间边界数。
select DateDiff(day,’2004-09-01′,’2004-09-18′) –返回:17

4. DatePart 返回代表指定日期的指定日期部分的整数。
SELECT DatePart(month, ’2004-10-15′) –返回 10

5. DateName 返回代表指定日期的指定日期部分的字符串
SELECT DateName(weekday, ’2004-10-15′) –返回:星期五

6. day(), month(),year() –可以与DatePart对照一下

select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)
select 本年第多少周=datename(week,’2004-10-15′),今天是周几=datename(weekday,’2004-10-15′)
select datename(dw,’2004-10-15′)

函数 参数/功能

GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

参数 interval的设定值如下:

值缩写(Sql Server) Access 和 ASP 说明

Year Yy yyyy 1753 ~ 9999
Quarter Qq q 1 ~ 4
Month Mm m 1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1 ~ 366
Day Dd d 1 ~ 31
Weekday Dw w 一周的日数,一周中的第几日 1 ~ 7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh h 0 ~ 23
Minute Mi n 分钟 0 ~ 59
Second Ss s 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999

access 和 asp 中用date()和now()取得系统日期时间;
其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似。

举例:

1.GetDate()
用于sql server : select GetDate()

2.DateDiff
DateDiff(‘s’,’2005-07-20′,’2005-7-25 22:56:32′)返回值为 514592 秒
DateDiff(‘d’,’2005-07-20′,’2005-7-25 22:56:32′)返回值为 5 天

3.DatePart
DatePart(‘w’,’2005-7-25 22:56:32′)返回值为 2 即星期一(周日为1,周六为7)
DatePart(‘d’,’2005-7-25 22:56:32′)返回值为 25即25号
DatePart(‘y’,’2005-7-25 22:56:32′)返回值为 206即这一年中第206天
DatePart(‘yyyy’,’2005-7-25 22:56:32′)返回值为 2005即2005年

DatePart() 函数:

返回 SQLServer datetime 字段的一部分。
语法:DatePart(portion, datetime)
其中 datetime 是 SQLServer datetime 字段和部分的名称是下列之一:
Ms for Milliseconds
Yy for Year
Qq for Quarter of the Year
Mm for Month
Dy for the Day of the Year
Dd for Day of the Month
Wk for Week
Dw for the Day of the Week
Hh for Hour
Mi for Minute
Ss for Second

详细的说明:

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DateDiff函数来计算出在你的程序中可能你要用到的一些不同日期。

在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。所有以下的例子都是以星期天作为一周的第一天来建立,也就是第一天设置为7。假如你的第一天设置不一样,你可能需要调整这些例子,使它和不同的第一天设置相符合。你可以通过@@DATEFIRST函数来检查第一天设置。

为了理解这些例子,我们先复习一下DateDiff和DATEADD函数。DateDiff函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。要了解更多的DateDiff和DATEADD函数以及时间间隔可以阅读微软联机帮助。

使用DateDiff和DATEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。你必须从时间间隔这个方面来考虑。比如,从当前日期到你要得到的日期之间有多少时间间隔,或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。理解怎样着眼于时间间隔有助于你轻松的理解我的不同的日期计算例子。

一个月的第一天

第一个例子,我将告诉你如何从当前日期去这个月的最后一天。请注意:这个例子以及这篇文章中的其他例子都将只使用DateDiff和DATEADD函数来计算我们想要的日期。每一个例子都将通过计算但前的时间间隔,然后进行加减来得到想要计算的日期。

这是计算一个月第一天的SQL 脚本:SELECT DATEADD(mm, DateDiff(mm,0,getdate()), 0)

我们把这个语句分开来看看它是如何工作的。最核心的函数是getdate(),大部分人都知道这个是返回当前的日期和时间的函数。下一个执行的函数DateDiff(mm,0,getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。这就是为什么你可以在DateDiff函数中指定第一个时间表达式为“0”。下一个函数是DATEADD,增加当前日期到“1900-01-01”的月数。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以获得这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”。

这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,然后把它加到“1900-01-01”上来获得特殊的日期,这个技巧可以用来计算很多不同的日期。下一个例子也是用这个技巧从当前日期来产生不同的日期。

本周的星期一

这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。

SELECT DATEADD(wk, DateDiff(wk,0,getdate()), 0)

一年的第一天

现在用年(yy)的时间间隔来显示这一年的第一天。

SELECT DATEADD(yy, DateDiff(yy,0,getdate()), 0)

季度的第一天

假如你要计算这个季度的第一天,这个例子告诉你该如何做。

SELECT DATEADD(qq, DateDiff(qq,0,getdate()), 0)

当天的半夜

曾经需要通过getdate()函数为了返回时间值截掉时间部分,就会考虑到当前日期是不是在半夜。假如这样,这个例子使用DateDiff和DATEADD函数来获得半夜的时间点。

SELECT DATEADD(dd, DateDiff(dd,0,getdate()), 0)

深入DateDiff和DATEADD函数计算

你可以明白,通过使用简单的DateDiff和DATEADD函数计算,你可以发现很多不同的可能有意义的日期。

目前为止的所有例子只是仅仅计算当前的时间和“1900-01-01”之间的时间间隔数量,然后把它加到“1900-01-01”的时间间隔上来计算出日期。假定你修改时间间隔的数量,或者使用不同的时间间隔来调用DATEADD函数,或者减去时间间隔而不是增加,那么通过这些小的调整你可以发现和多不同的日期。

这里有四个例子使用另外一个DATEADD函数来计算最后一天来分别替换DATEADD函数前后两个时间间隔。

上个月的最后一天

这是一个计算上个月最后一天的例子。它通过从一个月的最后一天这个例子上减去3毫秒来获得。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。

SELECT dateadd(ms,-3,DATEADD(mm, DateDiff(mm,0,getdate()), 0))

计算出来的日期的时间部分包含了一个Sql Server可以记录的一天的最后时刻(“23:59:59:997”)的时间。

去年的最后一天

连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。

SELECT dateadd(ms,-3,DATEADD(yy, DateDiff(yy,0,getdate()), 0))

本月的最后一天

现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用DateDiff比较当前日期和“1900-01-01”返回的时间间隔上加1。通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。

SELECT dateadd(ms,-3,DATEADD(mm, DateDiff(m,0,getdate())+1, 0))

本年的最后一天

你现在应该掌握这个的做法,这是计算本年最后一天脚本

SELECT dateadd(ms,-3,DATEADD(yy, DateDiff(yy,0,getdate())+1, 0))

本月的第一个星期一

好了,现在是最后一个例子。这里我要计算这个月的第一个星期一,这是计算的脚本。

select DATEADD(wk, DateDiff(wk,0,dateadd(dd,6-DatePart(day,getdate()),getdate())), 0)

DataTable的Copy和Clone方法使用注意

No Comments
ASP.Net(ASP), Web开发

把一个DataSet的表添加到另外一个DataSet会有如下提示:

名为“Table”的 DataTable 已属于此 DataSet。

解决办法是给这个DataTable添加一个名字。

如下:

BOClient bo1 = new BOClient();
BOOrder bo2 = new BOOrder();

DataSet ds1 = bo1.GetAllList(pageindex, PageSize);
DataSet ds2 = bo2.GetAllList(pageindex, PageSize);

//DataTable dt1 = ds2.Tables[0].Copy();
DataTable dt1 = ds2.Tables[0].Clone();

dt1.TableName = “Table2″;        //添加这句

ds1.Tables.Add(dt1);

ds1.WriteXml(@”c:/earch.xml”);

关于c#的问号(?)

1 Comment
ASP.Net(ASP), Web开发

string str2 = str1 ?? “”;
string str2 = (str1 == null) ? “” : str1;

int? myNullableInt = null;
int? myNullableInt = 1;

cmm.Parameters.AddWithValue(“@PaidTime”, model.PaidTime ?? Convert.DBNull);

嘿嘿,格式在这里,大家自己去理解吧。