为已有的 WebForm 项目引入 Asp.Net MVC 框架

Asp.Net 的项目多数还是应用的 WebForm 进行开发,MVC 框架随着在其他语言中的兴起,也进入了 Asp.Net 领域,那就是 Asp.Net MVC,现在的正式版本是 2.0,已经出了 3.0 Preview 版的。

WebForm 对于小项目的快速开发还是很方便的,对应对业务逻辑复杂而庞大的项目时,分层就很有必要的,MVC 恰到好处的层次结构,让人艳羡的。除此之外,应用了 MVC 框架的项目可测试性是 WebForm 无法比拟的,开始可以很好的进行单元测试了。 阅读全文 >>

Asp.Net 让文本框在按回车键时表单不提交

Asp.Net 的 WebForm 中光标在文本框时按回键默认就会提交表单,多数时候确实带来了很好的用户体验,输入数据后,手不用离开键去乱摸鼠标就能完成表单的提交。但总有例外不想要这种默认行为,一定有的,你遇到了就知道的,比如想在文本框中回车做别的事情,那就要点技巧的。

很多人可能会告诉你对文本框加个事件,回车的时候把 keyCode 由 13 变为 9(其实 keyCode 变为 9 是使回车相当于 Tab 键的功能),不过还未完事,你并没有阻止事态进一步蔓延,Form 还是提交了。 阅读全文 >>

asp:Menu 在 IE8/FireFox 下不正常显示子菜单的解决办法

在 Asp.Net 里用 Menu 控件,如果页面背景白色的,用 IE8 浏览感觉是无法展开子菜单。其实还是有展开的,只是一个白框,把页面背景设置了其他颜色就能看到。Menu 控件在 IE7 下没问题,FireFox 下也不行,反而 Opera 能正常显示。IE8 在趋于标准化的时候,显然是 Menu 控件不符合标准。

有三个解决办法,请参考:ASP.NET Menu and IE8 rendering white issue

1. 重写 z-index 属性:标准模式下 z-index 默认为 auto。 阅读全文 >>

Asp.net 使用 System.Web.Routing 来实现 UrlRewrite

不管是隐藏信息还是搜索引擎友好,UrlRewrite 还是很有用的。我们可以在应用服务层实现 UrlRewrite,比如 Apache 或 IIS;也可以在应用程序层实现 UrlRewrite。Java 有很好的组件实现,.Net 中可以用 UrlRewriter.NET 来实现。看 Asp.Net MVC 引入 Routing 的概念,不过幸运的是我们不必搞个 MVC 项目也能享受到 Routing,那就是 .Net 3.5 已经为 MVC 做好准备的 System.Web.Routing。

差点忘了轻带一下什么是 UrlRewrite,比如说: 阅读全文 >>

VS2008 发布网站时如何产生固定命名的 Dll 文件

VS2008 在发布网站时,bin 目录里为所有 cs 生成的 dll 文件每次都是随机命名的,像这样子的 App_Web_g2dnx-qj.dll, App_Web_s9nor8mv.dll,这样对更新 Live 站点很不方便,因为动态库名变了,涉及到每一个 aspx 文件每次都重新更改了对库的引用声明:

<%@ page language="C#" autoeventwireup="true" inherits="_Default, App_Web_s9nor8mv" %>

即使有一个 cs 的小改动,由于生成的动态库名称不一样,造成所有的 aspx 文件都得重传一遍。如果能固定动态库的文件名,更新网站时就省事多了,只改了 cs 的话,重新生成 dll 文件,只需要替换这一个 dll 文件就 OK 啦。我们可以找到几种做法: 阅读全文 >>

Asp.Net 中一个控件关联多个验证器时,如何同时只出一个验证器的错误信息

为一个控件绑定多个验证器那是很正常的,例如一个邮件输入框,首先它不能为空,其次不为空时邮件地址必须符合一定的规则,介于此,我们会依次放两个验证器,RequiredFieldValidator 和 RegularExpressionValidator。由于输入为空的时候对于 RegularExpressionValidator 是被认为通过的,所以同时只会显示其中一个验证器的错误信息。

再看个需求,比如输入邮件地址和再次确认的邮件地址,这时需要为第二个邮件输入框加除上两之外的第三个验证器 CompareValidator 用于验证两次输入是否一致,那么三个验证器依次是:

RequiredFieldValidator   RegularExpressionValidator  CompareValidator 阅读全文 >>

ASP.NET 中使用 Log4Net 记系统日志

Unmi原来一直是做 Java 的,凡是做 Java 的项目都会用到 Log4J 来记载日志,比如那些开源的框架,Struts/Hibernate/Spring 都有用到 Log4J, 系统日志成了一个必要的东西,没有它,软件出问题了很难去定位。

最近无奈间接手了一个 .NET 项目,代码一片混乱,又没有错误日志,只在不很紧要处用 LogEvent 写了些东西到系统事件日志中。经常的客户有对这个项目提些 TroubleShooting, 基本只能对代码走查找到问题所在,实在是累啊,而且有些问题可就无能为力了。所以希望在新的版本上线时有记录错误日志信息,这样以后发生错误就能根椐日志信息迅速定位到代码行以及了解到发生了何种具体异常。 阅读全文 >>

ASP.net从服务器端向客户端弹出alert对话框,但不使页面变成白板

在做ASP.net的项目时,碰到在页面上输入一些数据后,然后点击提交按钮,然后服务器端校验数据,如果数据不合格,用

Response.Write("<script>alert(' 用户名不存在!')</script>") 

向客户端推出一个警告窗口提示,这时候会发现,显示警告窗口的时候,在警告窗口的背面页面是一片空白,非得你按了警告窗口上的确定按钮,主页面才会显示出需要的内容。

为什么会出现一个页面白板呢?包括服务器端向客户端推出的 showModalDialog 模态窗口一样,用 Response.Wrtie()输出到客户端页面,可以通过查看生成页面的源文件,就能发现是在页面的最前面加上了 alert() 或 showModalDialog() js函数,这种警告窗口或模态窗口弹出来之后,将会阻止页面显示接下来的内容,所以您看到的就是一片空白,只有用户关了警告或模态窗口才会继续显示页面内容。那么怎么才能让显示 alert对话框或 showModalDialog 窗口时,主页面有内容显示呢?很简单,需要让生成的 html 中 alert 和 showModalDialog 处在显示内容的后面。 阅读全文 >>

用VS.NET开发asp.net时调试的时候出现错误,不能调试!

我用的是vs2003.net,原来本机安装的是IE6.0,现在换成了IE7.0,在vs2003.net中来调试C#写的ASP.net程序,启动时出现错误,不能调试
错误对话框是:
试图运行项目时出错:无法在Web服务器上启动调试。您不具备调试此应用程序的权限,此项目的URL位于Internet区域。有关更多信息,请单击"帮助"。

在网络上搜索找到下面这篇比较全面的资料:http://www.jxcn.cn/so/cnstu/3865/3865450.htm
--------------------------------------------------------------------------------
看一下网站的文件夹安全属性.是不是有操作权限.还有就是IIS的安全设置.要启用windows验证密码
-------------------------------------------------------------------------------- 阅读全文 >>