# Wednesday, June 09, 2010

在ASP.NET MVC 2中发生一些变化,当在一个Action中设置了某TempData的值,在读取它之前,它将一直存在,

  • 在同一个 HTTP Request 内可以读取多次,该次 Request 结束的时候会执行销毁动作
  • 但,返回类型为RedirectResult 或 RedirectToRouteResult MVC会执行Keep() ,保留 TempData 到下一页
这比较适合两个Action之间传值。当然了,在一个页面中读取时允许多次读取,也就是在ViewPage中可以多次读取TempData,但下个页面对不起将无法读取,因为已经自毁了,呵呵。

谢谢Will的纠正,已经对内容进行了更新:) 

Will 的严谨精神值得赞赏和学习。

Posted on Wednesday, June 09, 2010 5:08:58 PM (China Standard Time, UTC+08:00)  #    Comments [1]
# Tuesday, May 11, 2010

我们知道在Visual Studio 2010的非空Web项目(含Webform和MVC)中,都自动包含了jQuery库在项目的Scripts文件夹中。

image

但细心的人们都看到了正式版中包含的jQuery版本是1.4.1版,而不是jQuery官方最新发布的1.4.2版。处于新版效率的极大提升以及部分bug的修复,推荐大家跟新使用1.4.2版,而放弃1.4.1版。单个项目的调整比较简单就是把旧版本的删除,然后添加上1.4.2版的相应文件即可。但我们很多人可能更希望是以后创建的项目都是1.4.2版而不是1.4.1版,怎么办呢?我在相关的webcast中有提到过,即到vs2010的安装目录中修改项目模板的有关文件。目录位置以C#的项目为例如下:

  • x86: Program Files\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Web\1033
  • x64: Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ProjectTemplates\CSharp\Web\1033

需要修改的文件为,下图中被标黄的:

image

将这三个文件复制出来,然后解压,做如下事情:

  1. 先把Scripts文件夹中的jQuery相关文件删除并更新为最新版的,包含jquery-1.4.2-vsdoc.js,jquery-1.4.2.js,jquery-1.4.2.min.js等
  2. 然后修改×××××.csproj文件中关于jquery1.4.1的引用改为1.4.2的引用
  3. 最后把××××××.vstemplate文件中的jquery-1.4.1替换为jquery-1.4.1
  4. 保存上述修改,并打包为zip文件
  5. 将新的同名zip文件覆盖回项目模板所在目录
  6. 再将打包前的文件覆盖到项目模板的缓存目录中(项目模板路径的ProjectTemplates改为ProjectTemplatesCache 便是)
  7. 完毕

如果您嫌麻烦,我这里有已经打包好的zip文件,您参考最后3步自己覆盖一下即可。(jquery.validate-vsdoc.js未找到最新的版本所以未更新,jquery.validate.js则已经是最新版了)

MvcWebApplicationProjectTemplatev2.0.cs.zip (254 KB)

WebApplicationProject20.zip (129 KB)

WebApplicationProject40.zip (141 KB)

Posted on Tuesday, May 11, 2010 1:13:35 PM (China Standard Time, UTC+08:00)  #    Comments [4]

Visual Studio 2010于今年的4月12日正式发布,而且还是在中国北京进行的全球首发,盛况空前,且令人感动。

程序员“耀@爱情”系列情景剧 也真实表现出了程序员们的爱情现状,值得深思,我们到底该如何平衡生活与工作呢?

ok,言归正传。我个人在4月份一整月基本都是在讲VS2010的有关课程,其中有线上的webcast和线下的面对面培训,还有一些小组讨论会之类的事情。忙得身体有点透支的感觉,不过当听到不少程序员在下载观看我的课程视频,心里还是很欣慰的,本月暂时只讲了一堂webcast,做一下休息和思想的沉淀,希望以后给大家带来更多的精彩内容。下面我整理一下近期讲过的与Visual Studio 2010有关的视频课程列表。

【注:Visual Studio 2010 代码探索系列课程的内容都是本地高清录制的,视频文件较大】

Posted on Tuesday, May 11, 2010 4:37:00 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Tuesday, April 06, 2010
在Visual Studio中有一些不错的快捷键,可以帮助我们在ASP.NET MVC Web Project中快速创建Controller、创建Views以及在Controller Action和View之间切换。 ASP.NET MVC快捷键列表如下: -创建Controller:Ctrl+M Ctrl+C -创建View:Ctrl+M Ctrl+V View与Controller Action之间窗口切换:Ctrl+M Ctrl+G
Posted on Tuesday, April 06, 2010 10:18:00 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Monday, February 22, 2010

    现在ASP.NET MVC已经发布MVC2 RC2的版本,可以从http://www.microsoft.com/downloads/details.aspx?FamilyID=7aba081a-19b9-44c4-a247-3882c8f749e3&displaylang=en 页面上下载,当然了这个安装程序是针对VS2008的。而VS2010的最新发布版本为VS2010 RC版,该版本中内置了较新版的MVC2框架,不必单独安装。

    而我们使用过ASP.NET MVC的同学们呢,应该注意到MVC2中默认的强类型View模板跟之前的版本是不同的,主要原因是因为其对应的T4模板不同。如果有一个项目原来使用的ASP.NET MVC1开发的,现在要升级为MVC2。该场景下你对原来的默认强类型View加入了一些js特效,若跟HTML结构有直接关系,那么升级到MVC2会有不兼容问题,原因是MVC1的HTML是每个Model属性用<p></p>包括的,而MVC2的则是两个<div></div>分别包括属性的显示名和相应的编辑空间或显示内容。那么我们如何快速解决这个问题呢?其实较为简单,操作如下

  1. 到您的Visual Studio安装目录中搜索一下CodeTemplates,分别找到MVC1和MVC2对应的的CodeTemplates\AddViews目录
    image
  2. 将MVC1的CodeTemplates\AddViews中要用到MVC2的模板文件复制到MVC2的CodeTemplates\AddViews中,并修改相应的名称,甚至可以将类似TextBox方法改为TextBoxFor方法以提升性能,即可实现在该版本的VS中的所有MVC2项目的添加强类型View多出旧版View的支持。
  3. 如果只希望在当前的MVC2项目中能够创建旧版的强类型View,则可在项目根目录下创建CodeTemplates目录,并在CodeTemplates下创建AddViews目录,再然后将类似上一步中的方式将对应*.tt文件复制到当前项目的CodeTemplates\AddViews中即可,而VS安装目录中的MVC2的CodeTemplates\AddViews则保持初始状态即可。
  4. 同样当有特殊的强类型View需求时,也可以自己创建一个***.tt的T4模板文件添加到对应的CodeTemplates\AddViews目录中即可

    需要注意的是当将***.tt文件复制到MVC项目中的CodeTemplates\AddViews目录或其他任何目录时,VS会有一个自动的执行过程,即自动在***.tt下方生成一个新的同名aspx文件,这个文件对我们基本是无用的,所以删除即可。

Posted on Monday, February 22, 2010 6:06:00 AM (China Standard Time, UTC+08:00)  #    Comments [2]
# Wednesday, December 16, 2009

从2006年开始已经连任微软的MVP有4届了。在无特殊情况下,基本上微软的大部分公开和半公开的活动我都会参加,像Tech.Ed、WinHEC、MEDC、Microsoft Innovation Day以及MVP Open Day等。参加这类活动,我个人大部分不是抱着学习到什么新知识为目的的,与圈内好友交流是我去参会的最大驱动。

GCR  MVP Open Day 2009于2009年12月10日—12日在北京东方嘉宾国际酒店成功举办。我拖着2天1夜没睡觉的疲惫身躯坐了3个多小时的车前往会场,那真是一个疲惫啊。不过路上遇到了好友张华(前微软员工),跟他聊了一路,内容以SharePoint为主,因为他过去主要做SharePoint相关的事情,所以这方面大家的谈资多一些,当然也聊了关于微软的一些产品的看法,例如:微软拼音输入法2010 :D

达到会场所在地——太阳城之后,找到会场酒店还真是费了好大的劲,据说老大Sisley也费了一番周张,看来会务公司CSDN这次确有很大的问题。至少应该说明酒店在太阳城的什么位置,以及大概的行走路线啊,真是费解!!不过经由保安大哥的指点我们步行走过4个大的路口,然后左转右拐的终于摸索到了酒店,进行Check-In。由于两顿饭没顾得吃,实在顶不住了,跟张华一起到所谓的商业街上找吃的——几乎所有饭店都关门了,只剩下一个韩国料理了,没办法硬着头皮进去吃自助,狼吞虎咽的在一个小时内搞定,然后回酒店。回到酒店正好碰到了室友Cat Chen到达。进入房间后调侃了一下房间中有点暧昧的设计结构,呵呵。然后我们就开始聊经济、聊技术、聊创业、聊人生当然也聊微软,大概2点才睡,我这睡意才渐渐升起。于是关灯睡觉。

早上起来后,去会场参加Open Day的简单开幕和针对新MVP的开场keynote(因为似乎年年是这些内容,没太大变化)。虽然想提问一些敏感问题,但是觉得还是私下交流较好,不要扰乱了大家的心情:D。下午,在酒店的大厅跟桂素伟、施晓雨等人一起聊了一个下午,中间一些人也来客串了一下。其中聊到一些架构设计和某几个具体功能的实现算法问题,大家的讨论热情还是蛮激烈的,甚爽。不过老桂来北京工作了对我而言是个不错的消息,因为好友在北京越来越多了:D 晚餐后参加一个小型的晚会,见识了新认识的台湾好友黄保翕的精彩演唱,真是崇拜有加啊。希望越来越多的MVP可以在非技术方面也能有一些不错的表现呢。晚上回房间后继续聊天,然后似乎又是2点休息的,正如Cat Chen说的与我聊天必定会缺少睡眠,哈哈

第二天,坐专车大巴去望京的微软中国总部参观。新的微软大厦我在很早就在俞晖的带领下参观过了,而且之后因为各种事情也去过很多次了,所以对微软大厦的很多事情比较熟悉了。上午的一些演讲内容,也大部分跟ITPro有关,Develop方面少之又少,所以也没太大兴趣。但是最后阶段的社区相关内容大家的讨论还是蛮热烈的,提问也比较多,看来大家对MS Forum在中国的表现还是意见蛮多的,真心希望引起微软上层的重视呢!下午回去参加了几场Session。在MSPY(微软拼音输入法)产品组见面会上,大概我说得可能是最多的了,领起了很多相关问题的讨论。对MSPY 2010 Beta2的众多内容进行了批评并提供了一些建议,我不喜欢只提问题,所以基本提出的问题都给出了一定的解决方案,真心希望微软能够在RTM时能有较大改观,但说实话个人感觉悬~ 毕竟一些流程的东西和客观因素是会影响该版本的最终结果的。但还是那句老话,微软在面向个人消费市场的软件产品的方向上还需要更多的努力,适当向竞争对手学习对微软的一些产品组越来越必要了。Windows 7在提升用户体验方面已经起了个好头,希望微软的其他产品也能越来越好。当天参加的最后一场是MS Forum讨论会,与众多MS Forum的版主们一起讨伐了MS Forum在中国地区的访问速度,似乎这次微软确实准备接受并真正解决这一问题。MS Forum在国内的访问速度如果能够得到答复提升,对微软技术用户而言是个非常利好的消息啊,希望这个问题能够尽快得到解决,急盼中……

第三天,上午大陆和港台的MVP分到了两个会场,大陆地区这边有个专门的颁奖礼。我们百度知道MVP专家团的4名成员都得到了一个不错的奖品——微软的可折叠无线鼠标一个。另外跟其他很多对Windows 7社区做出贡献的MVP一起获得了证书和奖品(一顶帽子)。还是蛮开心的:D。午餐会上大家还是分地区而坐的,个人觉得这种方式并不是太好,因为相同地区的MVP本来就认识的比较多,午餐会应该打破地区限制甚至技术组限制,让大家交叉式的沟通,这样对MVP的社交圈扩大有好处。

PS:午餐会快结束时,一位大概是中国年龄最大的MVP——薛君敖来到会场,他因为前两天有工作不能参会,所以最后一天才赶到。他老人家也是多年的MVP了,而且曾经是美国贝尔实验室的研究员,我已经认识他很多年了,每次参加微软的活动时碰到就会一起聊聊,个人非常佩服他。离开会场坐专车大巴时,我们也是促膝而坐,一路上谈了很多事情,包括再创业!但是我发现似乎是年龄等问题,大部分的MVP朋友不认识他,很多人跟我打听他是谁。曾经有记者问过他“为何现在身兼数职还要坚持做MVP讲师?”,他说“知识在任何一个阶段都需要更新,需要和更多的人交流来快速获取新知识。而在MVP这样一个团体里面,周围又都是年轻人,他们的想法很多都是走在技术潮流的前沿,我在分享自己知识的同时又可以做到与时俱进,这是非常惬意的一件事。”希望他老人家的一番话也能给某些技术人员一些思想上的启示,也祝他老人家身体健康,万事如意。

Posted on Wednesday, December 16, 2009 6:38:30 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, November 26, 2009

前几天微软推出了office 2010的测试版和微软拼音输入法2010的Beta2版本。对于Office 2010的测试版来说,我很大程度上是非常欣喜的。比如说新的可回缩的工具栏,可以让我们在工作时占用少一些的屏幕面积;而新的文件菜单和功能也很酷很实用;outlook的社区化支持等新功能也非常的不错。总之对Office 2010的测试版,除了个别Bug的问题外,我很满意。也希望微软能够加油把她做好。

但是对微软的拼音输入法2010 Beta2,我个人有一些意见和建议。首先不得不说新版微软拼音输入法的启动速度和反应速度确实有了很大提高,中英文混合输入也有了一些改进,增加了专业词库以及它的自动更新功能……这些部分确实做的非常不错,值得鼓励和赞赏。但我个人认为要做好一个作品,光听到正面的褒奖是不行,需要听到负面的问题和合理的建议。下面我个人给出几条意见和建议:

  1. 微软拼音输入法2010相对2007的改进幅度相对版本号上来说,实在有点小。提供贴心的新功能和新特性实在不多。希望最终版本能够对得起这个大版本号的提升;
  2. 微软似乎仍然没有了解到客户在现今发达的网络环境下对输入法的真正需求是什么?Windows 7已经了解了用户的很多需求了,很人性化了。那么请问输入法团队,你对用户的需求真正做了良好分析了吗?Work Run和Experience是两回事儿,不要总是说某功能在某菜单下点击进入什么什么选项卡,然后找到什么按钮,然后如何如何,藏的那么深,有没有tooltip,一个不懂技术的普通用户能够搞清楚如何使用吗?一台机器被多个用户使用的情况从不少见,公司里、家庭里,而每个个体对输入法的使用习惯是不同的,对!没错,你们在系统中加入很好的自学习以及自造词等功能,但是请问如果用户到另外一台机器上还能获得相同的体验吗?那么即使用户不更换机器,那么在同一台机器上由于病毒等原因,需要重新安装系统,用户如何将输入法自学习的那些讯息备份出来呢?看到输入法的选项面板中有对这些信息的清除功能,我真是搞不明白,难道清除这些对用户习惯至关重要的数据比备份更重要吗?! 输入法功能菜单中有虽然有自造词的工具并将自学习的词库也可能进行一定的简单管理,但是这些词的权重如何调整和备份呢?
  3. 微软现在拥有较好的云解决方案、有强大的Live ID和Live应用,那么输入法能否搭载这些平台给用户提高体验呢?基于云的输入法不是更能衬得上2010这个版本号吗?比如说通过live mesh类似的服务将用户的自学习数据和自造词等profile的数据信息同步到云端,用户无论在哪台机器上都能获得相同的输入体验不是更好吗?
  4. 搜索框功能个人仍然建议去除掉,实在没有什么真正的实用之处,当然如果微软是为了提升某些live应用或bing搜索等,那就另当别论了。

就目前的测试版来说,我个人存在如上的意见和建议。真心希望微软拼音输入法能够越做越好,而不是逐步从我们的视线中消失。提高用户的体验,绑定用户的习惯在现在的大环境下已经变的越来越重要了。少一些强制感染,多一些贴心功能,这是对微软输入法建议的中心。

Posted on Thursday, November 26, 2009 12:51:15 AM (China Standard Time, UTC+08:00)  #    Comments [0]
# Saturday, September 19, 2009

51rLOXkdvYL__AA200_    前一阵子看的书中还有一本,是《Learn Programming Now – Microsoft XNA Game Studio 3.0》。

    我个人并非WinForm应用程序或是Windows Game应用的强项开发者,但对Windows 平台上的很多游戏还是很感兴趣的。比如说早期玩过星际争霸、红色警戒系列、命令与征服系列、CS1.5、光晕2、帝国时代系列、雷电3等等,闲暇的时候经常乐在其中。自己在高中的时候曾用GWBasic+浮点Basic做过一个很简陋的游戏,大学时也曾跟同学一起做过一个五子棋的游戏,但是那些游戏这两个的画面效果都比较简陋,没有优质的音视频效果。曾一度想尝试一下,可又懒得花太多时间去研究太多内容,毕竟不是这个方向的开发者,也没期望自己在这个方向作出什么成就,仅仅是一种喜好,稍作研究娱乐一下即可。而微软早前就有了Microsoft XNA Game Studio系列的工具,可以使得我们可以使用熟悉的.Net来做游戏,《Learn Programming Now – Microsoft XNA Game Studio 3.0》则正是指引我等Game开发的新手入门的书籍。兴趣使然,于是申请一本读读练练,还是蛮有意思的。不过也得出一个观点:做一款游戏挺难的,做一款真正好的又能支持多个平台(PC、XBOX、Zune……)的游戏则实在不是一般的难。

    该书的英文原本作者是Rob Miles,全书共近400页,而价格对中国读者而言恐怕也有点高:$29.99。内容对新手而言还是不错的,难道不是太高,熟读全文基本可以做出简单的For Windows/XBox 360/Zune 游戏。书中很详细的介绍了各个基础的细节,比如说如何加载、显示图片,如何画图,如何调整图片效果如何输出文字、声音颜色以及给他们加上一些特效,如何处理3-D effects、如何处理光照、如何创建多场景等等。可以说基础的游戏开发细节基本涵盖了,对准备进入游戏开发领域,又不想学习难度较高的C++时,Microsoft XNA Game Studio+C#是一个比较不错的入门选择。

    个人这里多说几句,现在太多年轻孩子过于迷恋游戏(尤其是网络游戏)而荒废了学业乃至丧失了生命(猝死),希望这些孩子能够在玩的时候知道一点职业游戏玩家毕竟是少数,而玩物丧志者却是大多数。如果真的喜欢游戏行业,我希望你们更多选择成为游戏的制作者而不是消费者,当然最好还是选择对社会对国家对孩子有利的方向,而不是游戏产业,要知道现在本科大学生相当一部分都处在失业中,而一个整天玩游戏的学生会超出这个失业的团体吗?

    对尚在上学的青少年来说,游戏电玩可以作为闲暇时候的一种休息或者是一种压力的宣泄,但不要把它当作了一种学业、工作甚至是事业。否则你、你的家人都将成为受害者,成为那些变态电击狂人的赚钱工具——给他钱让它电,最后还得给它下跪???

Posted on Saturday, September 19, 2009 10:09:06 PM (China Standard Time, UTC+08:00)  #    Comments [2]

original[1]     自从7月开始搬到北京来常驻了,起始的一段日子事情不多,所以拿出不少时间来看一些书籍。Sara Ford的《Microsoft Visual Studio Tips – 251 Ways to Improve Your Productivity》是其中一本不错的关于VS小技巧的书。Sara Ford是微软的资深测试人员,从2007年7月底开始,作为Visual Studio 产品组测试员的她,就把日常对VS的一些测试心得、使用技巧和诀窍等一一整理到博客中。在一年多的时间里她就记录了近400个tip,其中有一些恐怕是用VS2008很久的人都没察觉到的功能。而本书也就是她将她的博客整理而成的。书中内容有很多被Anytao等人翻译成了中文,推荐大家去看看。也许你会发现不少意想不到的小功能哦!

    虽说书中的文章基本全是博客上的内容,但有时候我更喜欢看书而不是电脑。有时候感觉电脑会让自己懒惰,更何况看书不会有电脑辐射影响嘛,呵呵。书中的内容组织还是很细致的,这充分体现了Sara Ford是个非常细心的人,看细心人写的书,读起来也会很轻松,心情自然愉快,况且内容不少让我们这些常年使用VS的人激动不已呢,经常发出“原来如此”的感叹。

    书中内容大家可以到Sara Ford的博客上看,也可以到Anytao的博客上读读翻译的部分内容,当然了有条件也希望你能够买一本放在案头闲来翻翻,相信会有所受益的。

Posted on Saturday, September 19, 2009 9:24:16 PM (China Standard Time, UTC+08:00)  #    Comments [0]
# Thursday, September 03, 2009
长期以来一直使用dasblog自带的皮肤,顶多稍做改动就直接使用之。前几天,突然来了兴致,就做了一款新皮肤出来。前一阵子跟一些朋友聊起dasblog等blog系统,有人说dasblog之所以推广程度不好,很大原因就是因为皮肤难看而且没有几款;还有说它没有什么扩展等等。我也蛮赞同他们的观点的,界面那么丑,谁愿意用它啊,自己的blog当然希望酷一点个性一点啦,哈哈。dasblog的主开发人员Scott Hanselman 的技术能力是众所周知的,但……
Posted on Thursday, September 03, 2009 3:57:24 PM (China Standard Time, UTC+08:00)  #    Comments [0]
«Older Posts