木子屋 Dnawo's BLOG

分类:Web编程

共 938 篇

C#获取Response.Redirect重定向后的URL

其实 Response.Redirect 重定向就是向客户端的浏览器发送一个特殊的HTTP报头: HTTP/1.1 302 Object Moved Location http://redirecturl 浏览器读到此报头,就按Location值的指示载入页面。所以,获取重定向后的URL也就是获取HTTP头的Location值。 根据这一原理写的C#代码: 参考文章 ·关于获取Response.redirect重定向后的URL ·DownPlus Http 组件 用来获取重定向的URL ·获取软件下载的真实地址

总结aspx必须放在具有 runat=server 的窗体标记内的控件

今天测试一个aspx页报错,提示:类型“TextBox”的控件“TextBox1”必须放在具有 runat=server 的窗体标记内。 页面代码如下: 很明显,少了form的原因,原因是我想去掉页面中隐藏的input而去掉了form: 加上form再测试就正常了: 后来又发现并非所有服务控件都要放在form中,总结了下: 必须放在具有 runat=server 的窗体标记内的控件: TextBox Button LinkButton ImageButton DropDownList ListBox CheckBox RadioButton HiddenField Calendar FileUpload…

C#获取sql中print语句输出的内容

using (SqlConnection conn = new SqlConnection("server=(local);database=Northwind;user id=sa;password=sa;")) { //在InfoMessage事件中获取print值 conn.InfoMessage += delegate(object sender1, SqlInfoMessageEventArgs e1) { Response.Write(e1.Message); }; conn.Open();…

aspx页面事件执行顺序

单个aspx页面按如下顺序激活事件: Page_PreInit Page_Init Page_InitComplete Page_PreLoad Page_Load Page_LoadComplete Page_PreRender Page_PreRenderComplete 若aspx使用了母版页,则按如下顺序激活事件: Page_PreInit MasterPage_Init Page_Init Page_InitComplete Page_PreLoad Page_Load MasterPage_Load Page_LoadComplete Page_PreRender MasterPage_PreRender…

小伎俩:使用桥页阻碍用户后退

在很多站点,特别是门户站的一些频道页中,我经常发现这么一种现象:点击链接进入频道页后,再点后退按钮,结果又自动跳回到频道页了。分析了下,流程大都是这样:点击链接打开A页面,A页面其实没有什么内容,主要就一小段代码(客户端)来实现自动跳转到B页面,B是真正的内容页。这边的A页面就是桥页,它负责连接到目标页。这样用户在B页面点后退按钮时,其实是回到了A页面,由于A页面代码的作用,又引导用户到了B页面,这样就阻碍了用户的后退,感觉不能后退了。 小技巧:连续单击两次后退按钮即可正常后退。 不论这种做法是故意的,还是无意的,可以肯定的是它成功阻碍了一部分用户的离开。当然,从用户体验来说,这种做法不值得提倡。…

DataBinder.Eval方法说明

在数据绑定控件中,我们经常会看到DataBinder.Eval的身影,例如: 它表示什么意思呢?我们先来看另一个例子: 它等效于: 很明显,在这边DataBinder.Eval就是取Request对象Url属性的值,同理,在数据绑定控件中,DataBinder.Eval就是取Container.DataItem对象ProductName属性的值,那Container是什么东西?稍做分析,会发现它表示一个RepeaterItem对象。ok,知道了这些,那我们将代码改成下边形式也是一样的: 最后说明下:DataBinder类处于System.Web.UI命名空间中,所以除Web应用程序外,在其他应用程序中一般无法直接使用它。

以编程方式设置Repeater控件模板示例

数据绑定控件Repeater有好几个模板,如HeaderTemplate、FooterTemplate和ItemTemplate等,它们都是ITemplate接口类型,因而,要以编程方式设置Repeater控件模板,只需给相应模板属性赋值一个ITemplate接口类型实例即可。下边是一个简单示例: 客户端调用:

XML declaration not at beginning of document

在VS2008下建了一个WAP母版页,代码如下: WAP_MasterPage.master: 放在Opera测试时老出错,提示:XML declaration not at beginning of document。 查看源代码,发现在xml声明前边多了一个空白行,所以Opera报错说xml声明不是在文档的最开始: 郁闷的是怎么弄那空白行都删除不了,再查看其他普通的ASPX页,发现第一行也都是空白行。后来突然想起以前有测试过在Page_Load事件中输出的文本是从顶行开始的,便想将xml声明放在Page_Load中输出,测试下了,果然可以,Opera也不报错了。 WAP_MasterPage.master:…

VS2008打开PetShop4提示:项目所需的应用程序未安装!

早前就有在机子上安装过PetShop4,并且用VS2008能正常打开,后来卸载了。今天重新安装了下,再用VS2008打开时,一大堆提示"项目所需的应用程序未安装": 打开后项目皆不可用: 尝试手工添加项目,在对话框中却看不见.csproj文件,但在winodws资源管理器中.csproj确是存在的。百度后发现是.csproj、.sln的打开程序不知什么时候被改成了"Micrisoft visual studio version selector": 好了,知道了原因,将这些文件的打开程序关联到VS2008即可,VS2008的EXE路径默认为:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe。…