随笔分类 - 编程
下载文件时根据MIME类型自动判断保存文件的扩展名
摘要:
用WebClient下载远程资源时,经常会遇到类似这样的网址:
http://www.uushare.com/filedownload?user=icesee&id=2205188
http://www.guaishow.com/u/luanfujie/g9675/
我们不知道这个Url具体代表的是一个网页,还是某种类型的文件。
而有些Url虽然带有扩展名,但可能是错误的扩展名,常见的比如把gif文件标上了jpg扩展名。
如果我们没法正确判断下载源的文件类型的话,就无法保存为正确的文件格式,会给后续操作及人工阅览造成困扰。
所幸的是,WebRequest可以给出下载源的MIME信息,这让我们可以确定文件的真实格式,并以此来决定最终的存储扩展名
阅读全文

.Net中绝对路径与相对路径(如“..\a.txt”)的拼合方法
摘要:
在做文件路径处理时,经常需要对一个路径的相对路径进行操作,那么如何拼合相对路径以生成新的绝对路径呢?
我们知道System.IO.Path是专门用来处理路径的静态类,它有一个Combine()方法就是用于拼接路径的,我们来测试一下其拼接效果。
我们使用一个命令行程序进行测试,这里要测试相对于文件C:\abc\123\avatar.html的一系列相对路径,测试代码如下……
阅读全文

稍加改进的Switch/Case扩展方法
摘要:
鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,现分享一下我的实现。
这样的扩展除了让代码显得更复杂以衬托出作者之牛B深奥之外,还有什么优点?
优点就是能在单句Lambda表达式中使用,这样就能让你更深奥一层……
哈哈,玩笑,不只是单句Lambda表达式,在充当方法的参数时,三元表达式又不够用的情况下,这样的扩展就大有用武之地了,你可以不必大费周章地再去定义临时的变量并给它赋值,或者专门建立一个方法来解决这类简单的判别问题。
它的形式可能不算优雅,
阅读全文

使用配置文件(.settings、.config)存储应用程序配置
摘要:
我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。
期间也看了看.config文件的读写方式,感觉还是很麻烦,不如自己序列化来的踏实。
后来才猛然发现微软早提供好了settings,用以定义.config文件内容,并生成相应的强类型类,使用起来极其方便~,感觉就像在火星居住了半辈子突然发现还有地球这好地方*_*~
鉴于网上settings方面的资料不多、不详,我就以此文来介绍一下基本的用法,让小鸟们少走我那条破路,老鸟请直接从上空滑翔而过即可。...
阅读全文

[SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
摘要:
首先我要说明:Asp.Net内置的Sitemap与这里讲的Sitemap是完全不同的,Asp.Net中的Sitemap主要用于给用户导航,而这里说的Sitemap是用来给搜索引擎爬虫指路。
还是直接来看看官方解释吧:
什么是Sitemap?
Sitemap 可方便管理员通知搜索引擎他们网站上有哪些可供抓取的网页。最简单的 Sitepmap 形式,就是 XML 文件,在其中列出网站中的网址以及关于每个网址的其他元数据(上次更新的时间、更改的频率以及相对于网站上其他网址的重要程度为何等),以便搜索引擎可以更加智能地抓取网站。 ……
阅读全文

也谈Asp.Net编译错误CS0433 类型XXX同时存在于…
摘要:
一直好好的Asp.Net项目,晚上突然出现这个问题,于是搜索了一下,看到有人给出了比较好的解决办法:
出现这种错误大概有三种情况:
1、ASPX页面,一个*.ASPX,对应着一个*.cs文件,两者其实是一个文件,通过两者实现代码分离,每个*.aspx页面都引用着自身的CS文件:如果两个页面引用了相同得.CS文件,在发布得时候也会出现这种错误。
2、估计是在Bin里面还有一个老版本的DLL,而新版的DLL名字换掉了,新的覆盖不掉老的,并存在BIN里时,有可能会发生这种情况. 解决方案:把BIN里的手动删掉,C:\WINDOWS\Microsoft.NET\Framework\版本号\Temporary A
阅读全文

谨慎注意WebBrowser控件的DocumentCompleted事件
摘要:
WebBrowser控件的DocumentCompleted事件一般就被认定为是在页面完全加载完毕后产生,而注释中也是这么写的,但事实却并非如此。
首先它不一定会在完全加载完毕时才触发,有时就会在加载过程中就会触发。
其次按照“完全加载完毕后”来理解,会认为通常一次页面跳转只会引发一次该事件,事实也并非如此,某些页面加载时会引发十多次乃至更多。
...
阅读全文

在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件
摘要:
这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser。
我在《WebBrowser控件使用技巧分享》一文中曾谈到过“我现在可以通过WebBrowser实现对各种Html元素的操控,唯独无法控制Html的上传控件”,出于安全原因,IE没有对上传控件提供操控支持,这使得我们没法像控制其他控件一样用简单的代码进行赋值。
比较实际的解决方案就是模拟操作了,下面我就将演示通过键盘、鼠标两种方式模拟点击“浏览”按钮,然后配合键盘模拟输入文件路径,并按回车键确认。
阅读全文

通过HttpModule实现IP地址屏蔽功能
摘要:
此前本想在网上找找实现Asp.Net的IP地址屏蔽功能的文章来参考,但是一搜索“IP 屏蔽 asp.net”,出现的全都是对我此前写的《细说Asp.net的IP地址屏蔽功能设计》一文的无情转载,不仅不保留出处、作者,而且连标题都没一个与我原文相同的~~
这篇文章写的是程序设计部分,并没有编程实现屏蔽功能,搜索引擎上翻了几页也没找到个正经写这方面的文章,无奈只好自己来研究实现,并写下此文的续篇了,倒是没什么难度。
本文将介绍通过实现IHttpModule接口,进行判断和屏蔽IP地址的方法。
...
阅读全文

免费的午餐——编程利用Google日历API发短信、Email
摘要:
Google日历是相当优秀的日程管理工具,可以方便的组织、分享各类日程,Google还提供了贴心而免费的手机短信、Email提示功能,真是非常的赞。
此外Google还公开了其API,使得我们可以通过各种语言编程访问。
我们要利用类库,及Google日历的免费短信、Email提醒功能,实现程序控制提醒。...
阅读全文

ASP.Net中Ado.Net Entity Framework实际项目应用释疑
摘要:
关于Ado.Net Entity Framework 的理论、入门教学文章已不少了,但是很少有人讲到在ASP.Net项目中实际项目应用的问题,往往学的时候轻松搞定,一上手项目就一头雾水。
我在此将结合自己的经验,解答包括上述问题在内的一些在ASP.Net实际项目中容易产生的疑问。
阅读全文

Google图表创建类 —— 高度封装!强力图表解决方案!
摘要:
Google图表API是一个免费的、非常强劲的图表生成工具,您可以仅凭一个Url地址,轻松生成一张具有专业水准的图表。
更为可贵的是,图表图形的计算和渲染完全由Google服务器处理,生成的图片也从Google服务器下载,你的服务器就可以大幅节约运算及网络流量资源。
故此,将Google图表API作为网站的图表解决方案,是一个绝佳的选择。...
阅读全文
【附视频】万分诡异!——ListView胡乱执行Page.Validate()的BUG
摘要:
今天做网站时遇到了非常恶心的事: 页面上有两个用户控件,其中一个包含ListView,用于显示商品评论列表,另一个就是用于发表评论的提交信息界面。
用于显示评论列表的用户控件中的ListView支持编...
阅读全文

EntityDataSource不易察觉的错误
摘要:今天在使用EntityDataSource显示数据时,返回的数据总是空的,确认过数据库内数据后,尝试去掉Where及参数,移除各种事件均告无效。 后来新建了一个EntityDataSource,简单配置一下数据源,测试通过。 挠墙半晌后看到Include属性中包含了一个已经在数据库及EDM中删除的导航属性,去掉该属性后测试即通过。 虽然是个人的小失误,但可恨的是对于这个简单的错误EntityDat...
阅读全文
ASP.Net控件模板中根据绑定对象的属性控制元素隐现技巧
摘要:
本文介绍了三种通过绑定对象控制元素隐现的方法:
直接在内嵌代码中判断和输出文本
在服务器控件的Visible属性中嵌入代码进行判断
使用PlaceHolder控件作为容器装载多个元素,在其Visible属性中内嵌代码控制内部多个元素的隐现
阅读全文

防止自建控件与页面间重复引入客户端js脚本的方法
摘要:
我们在创建自定义的服务器端控件或是用户控件时,经常需要用到一些客户端js脚本,通常将其作为资源嵌入,并在页面后台代码中添加引用,但是如若用到一些通用的js库(比如JQuery)时,就免不了产生一个疑问...
阅读全文

蹩脚的EntityDataSource和FormView控件(解决插入数据时报空引用异常的BUG)
摘要:
这两天做网站,某页中使用了EntityDataSource结合FormView插入数据,先是自动生成了这么个基本的表单然后运行,插入测试数据(咋变这色了?? ) 结果回回报错! 始终找不出错误位置,弄得我直想挠墙。...
阅读全文

关系数据库一对一关系模式应用示例
摘要:关系数据库中,一对多关系使用的非常普遍,多对多关系也时有用到,而一对一关系用的非常之少,本篇将展示一个一对一关系的使用示例。 首先我们有这样一个数据库: 这是一个简单的商业数据库,现在有一个需求:要求...
阅读全文