Joycode.MVC 0.5已经发布了

博客堂源代码自从去年开始就一直紧跟ASP.NET MVC的进度,开发了很长时间,一直都不好意思拿出来给大家显白显白。主要原因是Bug太多,实在是拿不出手。但在开发过程当中,实在是需要听取大家的反馈意见,所以现在把相关的工作做了一下整理,先把0.5的第一个CTP发布出来,以听到相关的建议。目前博客堂还运行的是0.4版本,所以像BING的搜索在博客堂上还没有出现,取而代之的是Google的BlogBar功能(不过Google的BlogBar对页面加载还会有一定的阻碍的)。

如果您希望下载源代码,请确保您的开发环境与我一样(其它环境主要是我个人没有进行过测试,希望各位有测试结果可以通知一下)。

1. IDE: Visual Studio 2008 SP1;

2. .NET Framework Version: 3.5 SP1;

3. ASP.NET MVC: 1.0;

4. OS: Windows 7 RC/Windows Vista/Windows Server; (ASP.NET MVC在IIS6下运行还需要特殊配置);

5. SQL Server 2008: 2005应该也可以,但我没有做过测试。

点击此处查看或者下载源代码;点击此处下载安装文件(不含源文件)

目前版本尚有很多Bug,不推荐普通用户下载。非常感谢。

如何判断当前浏览器是否是IE8?

IE8发布之后,市场份额在节节上升当中。由于目前Windows 7在市场当中的反响相当不错,相信随着Windows 7的上市,IE8的市场份额更会打着滚儿的上升。

对于网站主来说,除了做好IE8的兼容之外(其实就是W3C的标准兼容),还有一个细节需要注意,那就是如何来判断当前用户使用的是不是IE8。有很多哥们儿就说了,这还不容易吗?使用UserAgent不就可以了,根据当前的UserAgent字符串,查看一下是不是IE8?类似于展波兄给出的如何判断.NET版本一样。

如果你真的认为使用这个字符串就可以正确判断目标浏览器的版本号,那就有些很傻很天真了。作为一个完全兼容W3C标准的微软浏览器,在IE8当中为了照顾目前世面上大部分网站的需要,其总共提供了三个渲染引擎,即IE8标准模式,IE7的兼容模式,以及IE6的Quirks模式。而IE8的UserAgent字符串也会动态的根据渲染引擎不同而采用不同的字符串。比如以下三种情况:

1. 在最终用户访问你的网站时,点击了地址栏右侧兼容模式按钮;

2. 你的网站中的相应页面使用了IE7兼容字符串,即<meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible"/>,或者在Web服务器 (IIS/Apache)的HTTP Header信息当中作了相应的设置;

3. 微软为了协助贵公司的网站页面在IE8下显示更加兼容,在IE8兼容列表当中将贵公司的网站地址加入了一个Windows Update维护列表中(如果您的网站在此列表当中,并且您相信您的网站其实已经完全兼容W3C标准,所以想从此列表移除,可以发送邮件至[email protected]申请移除)。

那么在以上三种情况下,你得到的UseAgent字符串将会是IE7,而不是IE8。

那么如何正确判断当前浏览器是不是IE8呢? 使用以下代码即可:

   1:  function getInternetExplorerVersion()
   2:  // Returns the version of Windows Internet Explorer or a -1
   3:  // (indicating the use of another browser).
   4:  {
   5:     var rv = -1; // Return value assumes failure.
   6:     if (navigator.appName == 'Microsoft Internet Explorer')
   7:     {
   8:        var ua = navigator.userAgent;
   9:        var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
  10:        if (re.exec(ua) != null)
  11:           rv = parseFloat( RegExp.$1 );
  12:     }
  13:     return rv;
  14:  }
  15:  function checkVersion()
  16:  {
  17:     var msg = "You're not using Windows Internet Explorer.";
  18:     var ver = getInternetExplorerVersion();
  19:     if ( ver> -1 )
  20:     {
  21:        if ( ver>= 8.0 )
  22:           msg = "You're using a recent copy of Windows Internet Explorer."
  23:        else
  24:           msg = "You should upgrade your copy of Windows Internet Explorer.";
  25:      }
  26:     alert( msg );
  27:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, “Courier New”, courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

其实此问题,是我负责的一个客户前端时间询问我的。美国一个好哥们Giorgio Sardo帮我解决了此问题。在他的贴子当中,还有其它一些您可能感兴趣的内容,比如如何判断当前浏览器是否支持网页快讯(WebSlice),加速器(Accelerator)以及可视化搜索(Visual Search)等。您也可以一并阅读。