【原文地址】ASP.NET MVC 2 Released
【原文发表日期】 Thursday, March 11, 2010 9:24 PM
我非常高兴地宣布,针对含有ASP.NET 3.5的VS 2008/Visual Web Developer 2008 Express版的ASP.NET MVC 2最终版发布了,你可以在下列地址下载和安装它:
VS 2010 和 Visual Web Developer 2010的最终版将内置含有ASP.NET MVC 2, 所以,你不需要另外的安装就可以在其中使用ASP.NET MVC 2。
ASP.NET MVC 2
我们在不到一年之前发布了ASP.NET MVC 1版, 自那时起,几乎近百万的开发人员下载并使用了ASP.NET MVC 1的最终版,其人气(popularity)逐月递增。
ASP.NET MVC 2 是 ASP.NET MVC 的下一个重大更新版,它是与ASP.NET MVC 1相兼容的更新版,所以,你所有关于ASP.NET MVC的现有知识,技能,代码和扩展在以后都能继续发挥作用。跟第一个版本一样,我们还在与OSI相容的开源许可下发布了ASP.NET MVC 2的源码。
ASP.NET MVC 2可与ASP.NET MVC 1并行安装(这意味着,你可以在同一台机器上有一些应用是用V1建造的,而另一些是用V2建造的)。在这里,我们发布了一些说明,如何使用VS 2008将你现有的ASP.NET MVC 1应用升级到使用ASP.NET MVC 2。注意,VS 2010有一个自动升级的向导,可以为你自动地将你现有的ASP.NET MVC 1应用迁移到ASP.NET MVC 2。
ASP.NET MVC 2 特性
ASP.NET MVC 2添加了一堆新的功能和特性。我已经动手撰写一个博客系列,讨论其中一些新的特性,在将来还会做更深入地讨论。其中一些新的特性和功能包括:
- 新的强类型HTML辅助方法
- 跨越服务器和客户端的增强模型验证支持
- 通过模板定制来自动生成UI辅助方法
- 将大应用分割成为“区域”的支持
- 启用平行运行长时间运行任务的异步控制器支持
- 使用Html.RenderAction显示网页/网站子部分的支持
- 无穷多的新辅助函数,工具,以及API增强
- 改进了的Visual Studio工具支持
你可以在www.asp.net/mvc网站上的《ASP.NET MVC 2新特性》一文中了解这些特性的详情。
我们不久将在www.asp.net/mvc上发布许许多多的新教程和录像,涉及ASP.NET MVC 2版中的所有特性。我们还将发布一个更新了的,完全用ASP.NET MVC 2建造的全程教程(很象我撰写的涉及ASP.NET MVC 1的NerdDinner教程 )。
结语
ASP.NET MVC开发团队在过去的一年里定期发布了V2预览版以获取对特性集的反馈。我想对试用了预览版和给我们提交了建议/反馈/缺陷报告的每一位说一声,衷心感谢你!
我们希望你喜欢ASP.NET MVC 2的最终版!
Scott
【原文地址】Some VS 2010 RC Updates (including patches for Intellisense and Web Designer fixes)
【原文发表日期】 Monday, March 08, 2010 12:07 AM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
我们继续在朝着发布Visual Studio 2010的方向取得进展,我要向下载并试用了VS 2010 RC版的各位,特别是那些给我们发反馈或报告问题的人,表示衷心的感谢。这些数据在发布最终版前,帮我们找到和修补剩下的缺陷上,是非常宝贵的。
上个月,我曾在博客中写到为VS 2010 RC版发布的一个补丁,修补了一个很糟的Intellisense崩溃的问题。上个星期,我们又发布了2个补丁,你可以下载并施用于VS 2010 RC版,即时修补我们看到有人遭遇的另外2个常见问题:
修补了工具提示调用和停留于标识符之上时崩溃问题的补丁
Visual Studio开发团队最近发布了第二个补丁,修补了我们看到在显示工具提示时,通常是在停留于查看QuickInfo工具提示的标识符(identifier)之上时,造成的一些崩溃。
你可以在这个博客贴子中了解这个问题的细节,在这里下载和施用这个补丁。
修补了Web Forms设计器不能向自动生成的设计器文件中正确添加控件问题的补丁
Visual Web Developer开发团队最近发布了一个补丁,修补了web控件无法正确地加到与.aspx文件关联的.designer.cs文件中去的问题,该问题意味着无法在代码后台文件中对这些控件进行编程。
这个问题通常被描述为 “controls are not being recognized in the code-behind(后台代码中无法识别控件)” 或 “editing existing .aspx files regenerates the .aspx.designer.(vb or cs) file and controls are now missing(编辑现有的.aspx文件重新生成了.aspx.designer.(vb or cs)文件,丢失了控件)” 或者 “I can’t embed controls within the Ajax Control Toolkit TabContainer or the <asp:createuserwizard> control(无法将控件内嵌于Ajax Control Toolkit TabContainer或 <asp:createuserwizard>控件中)”。
你可以在这里了解该问题的细节,在这里下载和施用修补这个问题的补丁。
在Windows XP, Vista, Win Server 2003/2008系统中Intellisense和IDE滞缓的常见原因
在过去的几个月中,我们偶尔会看到有人报告说在VS 2010中键入文字和使用Intellisense时遇上巨慢无比的情形,尽管是在蛮不错的机器上运行的。这花了我们不少时间来追查其原因,但我们发现常见的问题所在是这些机器没有安装最新版本的UIA (Windows Automation)组件。
UIA 3 是随 Windows 7一起发布的,在XP 和 Vista上是推荐的Windows Update补丁(我们没有在测试中看到这问题的原因是因为我们的机器都用所有推荐的更新打过补丁了)。但许多系统(特别是XP),并不自动安装推荐的更新,而是以比较老的UIA版本运行的。这会在VS 2010编辑器中,在显示大的列表时(例如:使用intellisense时),导致显著的性能缓慢问题。
如果你是在Windows XP, Vista, 或 Windows Server 2003 或 2008上运行,看到编辑器或IDE任何性能问题的话,请安装免费的UIA 3 更新,它可从这个网页上下载。如果你向下卷动页面,你会发现针对每个OS的版本的直接链接。
注意,我们正在对VS 2010的最终版做改进,这样,在UIA 3没有安装时也不会有大的性能问题,我们还会在IDE中加消息,如果你没有安装UIA 3但激活了accessibility,它会向你提醒。
WPF 4 和 VS 2010中改进了的文字显示
我们最近对WPF 4做了一些非常棒的改动, 较之于VS 2010/.NET 4 RC版,改进了文字的清晰度(text clarity)和清脆度(text crispness)。特别地,这些变动会改进那些在较暗的背景下有浅色文字(light text)的场景。
你可以在WPF开发团队这个博客贴子中了解这些改进的细节,这些改动将会出现在VS 2010 和 .NET 4的最终版本中。
希望本文对你有所帮助,
Scott
【原文地址】No Intellisense with VS 2010 RC (and how to fix it)
【原文发表日期】 Friday, February 26, 2010 11:47 PM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
Patrick 最近在博客中写到了在安装VS 2010 RC版时发现的奇怪问题: C#的代码Intellisense不工作。当他调出工具->选项,查看文本编辑器->;C#下的设置时,他注意到Intellisense不工作的原因是因为他的配置把它关闭了,他不能理解为什么Intellisense会被默认设置为关闭:

为什么会发生这样的情况?
上述情形发生是因为:
1) 当你在安装了VS 2008的机器上第一次运行VS 2010时,它会问你是否想要导入现有的VS 2008配置。在默认情形下,这个复选框是选中了的,这意味着,在默认情形下,会自动导入你现有的配置。
2) 有些VS插件, 例如Resharper, 会关闭VS中内置的C#代码Intellisense,而代之以他们自己的实现。如果你在VS 2008中安装了Resharper,上面的VS代码Intellisense配置就会被关闭了。当你在第一次运行VS 2010时导入你现有的配置时,导入的代码Intellisense会处于禁止的状态。如果你还没有在VS 2010中安装Resharper(是个单独的安装)的话,那么在默认情形下,你的Intellisense就是关闭的。
如何解决这个问题?
在VS 2010 RC版中解决这个问题相当简单,只要采用下述2个方法中的任意一个即可:
1) 使用工具->选项菜单命令,选择文本编辑器->C#设置,将上面圈出的2个复选框(自动列出成员和参数信息)打勾,然后Intellisense就会工作了。
或者:
2) 安装可在VS 2010 RC版下工作的Resharper版本,它会使用自己的机制启动Intellisense。
我们正在修改VS 2010最终版中的配置导入行为
我们听到有几个人报告遇上了这个问题,因为该行为非常令人困惑,我们正在修改VS 2010最终版中的配置导入行为,以避免造成这个问题。如果一个插件在VS 2008中关闭了Intellisense,在默认情形下,当你将配置导入VS 2010,我们会重新启用Intellisense,这会确保在一个干净安装(clean install)的VS 2010中,Intellisense总是默认工作的。
希望本文对你有所帮助,
Scott
【原文地址】Patch for VS 2010 RC Intellisense Crash Issue Now Available
【原文发表日期】 Monday, February 15, 2010 10:15 AM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
上个星期, 我在博客里写到了不幸在VS 2010 RC版中发生的一个intellisense崩溃的问题。
崩溃症状
如果当你在编辑器里键入东西,与此同时Intellisense窗口出现或消失,遇上经常性的 VS 2010 崩溃的话,那么你就是遇上了这个问题。
补丁出来了
今天早晨,我们发布了一个VS 2010 RC版补丁,修补了这个问题。你可以在这里下载和运行。
如果你遇上了任何VS 2010 RC版崩溃的问题,或者你有一个tablet,多点触摸,屏幕阅读器,或连有外部设备(包括Wacom tablet,电话/ipod,或其他通过USB连接的设备)的话,请施用这个补丁。
请通过connect.microsoft.com网站向我们提交你遇上的任何VS 2010 RC版的问题。在你提交完后,也请给我发电邮(scottgu@microsoft.com),附带该问题的链接,我会确保合适的队伍尽快追查原因并采取后续措施。
希望本文对你有所帮助,
Scott
【原文地址】LIDNUG Online Chat with Me on Thursday Feb 11th
【原文发表日期】 Wednesday, February 10, 2010 10:57 PM
今天我们向所有人开放了 VS 2010 RC版的下载,你可以在这里下载。Jason Zander, Visual Studio开发团队的主管, 在这里 有一个很好的博客贴子,总结了相关的许多常见问题。
就象我在星期一关于RC版的博客贴子里提到的那样,如果你遇上任何缺陷或问题,请给我发电邮(scottgu@microsoft.com),那样我可以确保跟你联系上某个人,由他很快地追查问题所在。
2月11日星期四太平洋时间早晨10点(【译注】北京时间2月12日凌晨2点)与我在线聊天
2月11日星期四早晨10点到11点半(太平洋时区),我将做一个虚拟网播聊天活动。这个聊天活动是向所有人开放的,由LIDNUG用户组织主办。聊天的格式也是开放的,你听的时候可以问任何问题,而我则会试着回答尽可能多的问题。我期望我会花很多时间,讨论VS 2010, .NET 4, Silverlight 4, ASP.NET 4 和 ASP.NET MVC 2。
你可以在这里注册,免费参加这个聊天活动。
希望本文对你有所帮助,
Scott
【原文地址】ASP.NET MVC 2 (Release Candidate 2) Now Available
【原文发表日期】 Friday, February 05, 2010 12:44 AMM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
今晚早些时候,ASP.NET开发团队发布了针对 VS 2008/.NET 3.5 的 ASP.NET MVC 2 (RC2 - 最终版候选版本2)。你可以在这里下载。
ASP.NET MVC 2的RC2版是去年12月发布的第一个ASP.NET MVC 2 RC版本的续本,它包含了一堆缺陷修补,性能工作,以及一些最后的API和行为添加/变动。下面是一些 RC1 和 RC2版本之间的变动(想了解更多细节,参阅发布说明):
- 新的ASP.NET MVC 2 验证特性现在做模型验证,而不是输入验证(这意味着当你使用模型绑定时,所有的模型属性都会被验证,而不仅仅是对模型中改变了的值的验证)。这个行为变动是基于社区的大量反馈而作的。
- 新的强类型HTML输入辅助方法 现在支持lambda表达式,可以引用数组或集合索引。这意味着,你现在可以编写象 Html.EditorFor(m=>m.Orders[i])这样的代码,而由它正确地输出一个HTML <input>元素,它的name属性会包含索引(即,第一个元素是 Orders[0] ),它的value属性包含合适的值。
- 新的模板化 Html.EditorFor() 和 Html.DisplayFor()辅助方法现在会自动生成简单的属性(默认不显示复杂的子属性)。这可以方便生成自动的脚手架表单。我会在将来一个博客贴子中讨论该支持。
- 客户端脚本验证消息元素的id属性现在比较干净了,在RC1中,它们有个 form0_前缀。现在的id值只不过是输入表单元素名称 加后缀 validationMessage 字符串(例如, unitPrice_validationMessage</EM)。< li> 。
- Html.ValidationSummary() 辅助方法现在接受一个可省略的比尔值参数,该参数允许你控制是否只显示模型层次的验证消息,还是也显示属性层次的验证消息。这给你如何在UI中显示验证消息提供了更多的UI定制选项。
- 由默认的ASP.NET MVC Web应用项目模板创建的AccountController类现在更干净了。
- Visual Studio现在包括了对控制器中的Delete action方法的脚手架支持,以及Delete视图(我对默认的T4模板以前不支持这个总是觉得有点怪)。
- jQuery 1.4.1 现在默认包含在新的ASP.NET MVC 2项目中,也包括相关的 –vsdoc 文件 (该文件提供了jQuery 1.4.1的Visual Studio文档intellisense)。
- RC2版本有一些显著的性能调整方面的改进(例如,基于lambda的强类型HTML辅助方法现在快多了)。
今天发布的RC2版本只在VS 2008和.NET 3.5下工作,不久我们将发布 VS 2010 RC (谁都可以下载)。它会内置包含ASP. NET MVC 2的支持(不需另外的下载)。
希望本文对你有所帮助,
Scott
【附注】 ASP.NET MVC 2 RC2 版本(以及随行发布的 MVC Futures库)的源码可以在这里下载。你可以通过阅读我正在撰写中的ASP.NET MVC 2 博客系列,来了解ASP.NET MVC 2的详情。
【原文地址】About Technical Debates (and ASP.NET Web Forms and ASP.NET MVC debates in particular)
【原文发表日期】 Sunday, January 24, 2010 4:08 PM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
技术争论在博客和twitter里无休止地进行着,这些争论涵盖每个开发人员社区。每个语言,框架,工具,和平台在某个特定的时间都不可避免地会至少有几个争论在进行中。
下面是我多年来对技术争论所做的几个总的观察,以及对一些我最近看到的,尤其是关于ASP.NET Web Forms 和 ASP.NET MVC的最新讨论的一些评论。
关于技术争论的总的观察
下面是几个总的观察,无关任何具体技术争论:
a) 开发人员喜欢充满热情地争论和比较语言,框架,APIs,和工具。每个编程社区(.NET, Java, PHP, C++, Ruby, Python等等)都如此。我认为你可以2种方式来看待这类宗教性的技术争论:
- 这些争论有时很讨厌,经常是浪费时间。
- 这些争论经常是一个既健康又活跃的社区的一个标志(因为激情意味着争论双方的人都深切地关注着,远远好过了无兴趣(apathy))。
就个人而言,我认为两者都对。
b) 开发什么东西从没有唯一的“正确之道(one right way)”。作为面试的开场题目,我有时会要求参试者以他们所能的效率最高的方式来对一组数字进行排序,大多数人都做的不是很好。这通常并不是因为他们不知道排序算法,而是因为他们从来不想起来询问其后的场景和需求,而这些对理解效率最高的方式的做法是至关紧要的。数字序列有多大?典型数字序列的随机度有多高?(是否大部分已经排好序了?数字差幅有多大?数字都是独特的么?重复数字是否群集在一起?)计算机架构的平行度有多高?作为排序的一部分,能否分配内存还是内存必须是常量? 等等。这些都是该问的重要问题,因为一组数字的效率最高和最优的排序方式依赖于对这些答案的理解。
任何时候人们声称某个编程问题只有一个唯一的“正确之道”时,他们几乎总是假定了一套固定的需求/场景/输入,而这对每个场景或每个开发人员来说,很少是最佳的。众所周知,编程中的大多数问题比将一组数字进行排序要复杂多了。
c) 优秀的开发人员使用差的工具/框架也能造出优秀应用来,差的开发人员使用优秀的工具/框架也能造出差的应用来。在根据所用的工具/框架对你正建造的应用的质量来做太广的假定(无论好坏)时要千万谨慎。
d) 开发人员(好的和差的)可以通过延伸自己,学习新的思路和方式方法来变得更加强大。即时他们最终并不直接使用新的东西,学习这个行动本身就能以积极的方式使得他们变得锐利。
e) 在技术行业里,变化是永恒的。变化可以令人害怕。但你是否被变化压倒(get overwhelmed),归根到底取决于你是否让你自己被压倒。别太担心需要停下来,突然学一堆新东西,你很少需要那么做。 避免被压倒的最好方法就是务实,对大范围的东西在高的层次上保持相当地了解(而不仅仅是技术和工具,也包括方法学),有自信认识到,如果学一门新技术很重要,那么你现有的开发技能的绝大部分能够转移过去并且有所帮助。不管怎样,对开发而言,句法和APIs很少是最重要的东西,问题的解决,客户共鸣和互动(customer empathy/engagement),以及能够专注一个项目并且训练有素的能力,更为宝贵。
f) 下面是我偶尔会给我的开发团队的人员一些在与他人协作和交流时的引导:
- 告诉别人他们很蠢,你很少会赢得争论,无论你对他们智商问题的解释是多么有善意,或者是多么有说服力。
- 总有某个人,在世界上某个地方,比你更聪明,- 别总是假设他们跟你不在一个屋里。
- 你交流的人往往会忘记你给予他们的赞誉,往往会记住以前的侮辱,- 所以说话时一定要审慎,否则后患无穷(come back to haunt you later)。
- 人们可以改变主意,也会改变主意, - 所以在争论中一定不要固执己见,他们改变主意的话,也别洋洋得意或者歧视他们。
g) 当我听人埋怨编程抽象不太好时, 我总是发现有点啼笑皆非,特别是当这些埋怨是通过博客来发表的时候,想想博客内容是使用HTML来显示的,用CSS来做的样式,用JavaScript来做交互的,在线上是用HTTP传输的,在服务器端是用高级语言编写的应用实现的,使用了面向对象的,垃圾回收的框架,是在解释的或JIT编译的字节码运行时之上运行的,博客内容和评论最终是保存在关系数据库中的,最终还是通过SQL查询字符串来访问的。所有的这些都是在主机服务器上的VM中运行的,而VM中的OS以kernel模式和用户模式进程界限对内存进行分配,使用线程调度工作,使用信号触发设备事件,使用抽象的存储API做硬盘持久。等下一次你读到 “ORM与存储过程之比较” 或者 “服务器控件,是好是坏?” 贴子的时候,非常值得把所有这些东西在脑子里再回想一番。而更有趣的争论都是关于特定问题的最佳抽象的。
h) 编程争论的历史是一个漫长的无限循环,其实大多数的编程想法都早已被解决过很多次了。不管是真是假,我们今天争论的许多问题很久以前就已在LISP 和 Smalltalk中解决了。令人啼笑皆非的是,尽管非常优雅地开创了许多东西,这二门语言却用得不太多了,琢磨去吧。
针对ASP.NET Web Forms / ASP.NET MVC之争的一些评论:
下面是对我最近看到在社区里传播的一些争论的几个评论,这些争论是关于ASP.NET Web Forms 和 ASP.NET MVC哪个方案最好的:
a) Web Forms 和 MVC是用来建造ASP.NET应用的2种方案,它们都是不错的选择。取决于应用的需求和参与开发的团队成员的背景,对特定的问题,每个方案都可以成为“最佳选择”。你可以使用两者中的任意一个建造出优秀应用来。你也可以使用两者中的任意一个建造出糟糕应用来。你是好的还是差的开发人员,并不取决于你选择了什么。使用两者,你可以是绝对地棒,也可以是毫无用处。
b) ASP.NET 和 Visual Studio开发团队在Web Forms 和 MVC上都投下了大量资源,随便哪个都不会消失。两者在接下来的几个月内都会有重大发布。ASP.NET 4包含了对Web Forms的重大更新 (干净的 ClientID 和 基于CSS的标识输出,较小的ViewState, URL导向, 新的数据和报表控件, 新的动态数据特性,新的SEO APIs, 新的VS设计器和项目改进等等)。ASP.NET 4中还会同时发布ASP.NET MVC 2,其中包含了重大的更新(强类型的辅助方法,模型验证,多区域,更好的脚手架支持,异步支持,更多的辅助方法APIs等)。别担心其中一个会变成死路一条或者你必须转向某一个。我怀疑,在我们大家都死了很久以后,在Internet某个地方还会有服务器依然还在运行基于 ASP.NET Web Forms 和 ASP.NET MVC两者的应用。
c) Web Forms 和 MVC 间共享的代码/基础设施/APIs 远远超过了参与争论双方的任意一位所提到的,- 认证,授权,成员,角色,URL导向,缓存,会话状态,用户信息,配置,编译,.aspx网页, .master 文件, .ascx 文件, Global.asax, 请求/回复/Cookie APIs, 健康监测,进程模型,跟踪,部署,AJAX, 等等等等。无论你是怎么构建你的UI的,你学到的所有常用的东西还是同样有效的。在未来,我们将继续投入大量资源建造可用于Web Forms 和 MVC两者的核心ASP.NET特性( 象URL导向,部署,输出缓存,和我们加到 ASP.NET 4 中的DataAnnotation的验证特性)。
d) 我经常发现围绕着编程模型之合适性和抽象的争论有点可笑。Web Forms 和 MVC两者都是编程web框架抽象,是建立在更广的框架抽象之上的,以高级编程语言编程,在运行引擎抽象之上运行,而运行引擎抽象本身又是在名为OS的巨大抽象之上运行的。你用Web Forms 和 MVC创建的是 HTML/CSS/JavaScript (所有的抽象都被持久为文本,在HTTP之上传输,而HTTP则是另一个高层次的协议抽象)。
该争论的有趣的问题不是这些抽象是好还是坏,而应该是哪个抽象你感觉最自然,哪个抽象与你项目的需要/场景/开发人员最匹配。
e) 我们即将对www.asp.net网站做一个非常重大的更新。作为更新的一部分,我们将发表更多的全程(end to end)教程/内容(Web Forms和MVC两者都有)。我们还将提供教程和指引,帮助开发人员很快地评估Web Forms和MVC两种方案,轻松地学习两者的工作原理基础,很快地决定哪个他们感觉最好。这将方便新的ASP.NET开发人员,以及已经知晓Web Forms或者MVC的开发人员,来理解和评估这2种方案,然后决定他们想要使用哪个方案。
f) 决定某个项目你究竟想使用Web Forms还是MVC,然后对此决定你要感觉高兴。两者都是好的选择。尊重别人做的选择,他们做的选择希望是一个好的,并且进展会顺利的选择。记住,十有八九,他们对他们自己的业务/技能的了解要比你所了解的多得多。同样地,希望你对你自己的业务/技能的了解也比他们所了解的多得多。
g) 与他人共享想法和最佳实践, 那是博客,论坛,邮件列单和社区的一个重大部分。它们之所以成功,是当人们知道他们的想法不会被批得体无完肤,而且他们会受到尊重的对待。请有建设性,而不是刻薄。请教授,而不是教训。记住,三人行,必有我师。
希望本文对你有所帮助,
Scott
【原文地址】ASP.NET MVC 2: Strongly Typed Html Helpers
【原文发表日期】 Sunday, January 10, 2010 8:57 PM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
这是我针对即将发布的ASP.NET MVC 2所撰写的贴子系列的第一篇,这个博客贴子将讨论 ASP.NET MVC 2中新加的强类型HTML辅助方法。
现有的HTML辅助方法
ASP.NET MVC 1中发布了一套HTML辅助方法,可以用来在视图模板中帮助生成HTML界面。例如,要输出一个文本框,你可以在你的.aspx视图模板中使用Html.TextBox()辅助方法编写下列代码:
上面辅助方法的第一个参数提供了文本框的名称及id,第二个参数指定了它该有的值,然后上面的辅助方法会显示象下面这样的HTML到浏览器:
新的强类型HTML辅助方法
大家对ASP.NET MVC 2要求的一个常用特性是,要我们支持强类型的HTML辅助方法,这样的辅助方法使用 lambda 表达式来引用传到视图模板中的模型或视图模型。这可以促成更好的编译时视图检查(可以在编译时发现缺陷,而不是在运行时),还可以促成视图模板中更好的代码intellisense支持。
新的强类型HTML辅助方法现在已经内置于ASP.NET MVC 2中了,这些方法使用"Html.HelperNameFor()”的命名规范。例如,Html.TextBoxFor(), Html.CheckBoxFor(), Html.TextAreaFor()等等。它们支持使用lambda表达式来指定元素的名称和id,以及要显示的值。
例如,除了上面的Html.TextBox()辅助方法外,使用ASP.NET MVC 2,我们现在还可以使用新的Html.TextBoxFor()辅助方法:
注意上面,我们不再需要指定 “ProductName” 字符串参数,lambda表达式是相当灵活的,除了值以外,我们还可以获取我们模型对象中的属性/字段的名称。
因为这些HTML辅助方法是强类型的,编写lambda表达式时我们还可以在Visual Studio中得到完整的intellisense支持:
显示的HTML跟前面的后期绑定的HTML辅助方法版本的输出是一样的:
内置于ASP.NET MVC 2中的强类型HTML辅助方法列表
ASP.NET MVC 2对下列强类型的HTML辅助方法提供内置支持:
HTML元素辅助方法:
- Html.TextBoxFor()
- Html.TextAreaFor()
- Html.DropDownListFor()
- Html.CheckboxFor()
- Html.RadioButtonFor()
- Html.ListBoxFor()
- Html.PasswordFor()
- Html.HiddenFor()
- Html.LabelFor()
其他辅助方法:
- Html.EditorFor()
- Html.DisplayFor()
- Html.DisplayTextFor()
- Html.ValidationMessageFor()
我会在本系列的后期贴子中讨论ASP.NET MVC 2中改进了的“自动脚手架(auto-scaffold)"功能时,对新的Html.EditorFor() 和 Html.DisplayFor()辅助方法做进一步介绍。在本系列的下一个博客贴子中讨论ASP.NET MVC 2中改进了的验证支持时,我们还将使用Html.ValidationMessageFor()辅助方法。
Scaffolding中的强类型HTML辅助方法
VS 2008 和 VS 2010两者在用“添加视图”命令“生成(scaffolding)”新的强类型视图模板时,现在都会默认使用新的强类型HTML辅助方法。
例如,假设我们有一个象下面这样的简单 “ProductsController” 类,有一个“Edit” action方法,会为“Product”模型类显示一个编辑表单:
我们可以使用Visual Studio在Edit action方法中右击,选择“添加视图”上下文菜单命令来创建一个视图模板,我们将选择创建一个“Edit”模板,该模板是使用Product对象来生成的(scaffolded):
在ASP.NET MVC 2中,默认生成的视图模板现在使用了新的强类型HTML辅助方法来引用Product模型对象:
结语
包含在ASP.NET MVC 2中的强类型HTML辅助方法提供了一个很好的方式来在视图模板中得到更好的类型安全。这促成了对你的视图的更好的编译时检查(允许你在编译时,而不是运行时发现错误),还在Visual Studio中编辑视图模板时支持更丰富的intellisense。
希望本文对你有所帮助,
Scott
【原文地址】Visual Studio 2010 and .NET 4 Update
【原文发表日期】 Thursday, December 17, 2009 4:21 PM
十月份,我们发布了Visual Studio 2010 和 .NET 4的公开 Beta 2 版。大家对VS 2010 和 .NET 4中新特性的反馈非常地好。我还撰写了一个博客系列讨论其中一些特性(还有更多的贴子在前头!),还有机会将它们呈现给更大范围的观众,听到大家对它们的兴奋之情,非常让人开心。
但同时,我们也收到了反馈说VS 2010 Beta 2的性能和虚拟内存的占用还没达到正式发布前的水平。
过去的2个月,我们着重做了性能优化,整个产品的性能和虚拟内存的占用都大为改进。测试了Beta2之后中间版本的一小部分的客户的早期反馈对这些改进非常正面。我们还有若干个大的性能方面的修补目前正在签入过程中(in the process of being checked in),将会提供进一步的改进。
公开的最终版候选版(Release Candidate)
为了确保这些修补确实解决了报告的性能问题,帮助在最大范围的场景和机器配置下确认其有效性,我们决定在正式发布前再发布一个VS 2010 和 .NET 4的公开预览版。具体来说,我们计划在二月份发布一个Release Candidate版本,每个人都能下载和测试。这将是个公开的版本,包括大范围的支持生产性部署的“go live”许可。
这个Release Candidate版本的目的是想就产品是否就绪得到大家全面的反馈,为了确保我们能够收到反馈并对这些反馈作出反应,我们还将把Visual Studio 2010 和 .NET 4正式发布的日期推后几个星期。
请继续发送给我们你对产品的反馈,以及你在目前的Beta 2版本中所遇到的问题的细节。你的反馈是非常宝贵的,会帮助确保我们发布合适的产品。请随时给我发电邮(scottgu@microsoft.com),如果你遇到某个你认为还没有报告过的问题的话。
希望本文对你有所帮助,
Scott
【原文地址】Silverlight 4 demos from my PDC Keynote now available
【原文发表日期】 Wednesday, December 16, 2009 9:56 PM
【除了写博客外,我现在还使用Twitter发短贴和共享链接。请通过twitter.com/scottgu跟随我。】
上个月,我在PDC大会上做了一个Silverlight 4的主题演讲。你可以在这里在线观看我的主题演讲(我的部分是在录像的53:30时分开始的)。
在演讲中,我展示了多个很有趣的示范,着重介绍了Silverlight 4中的一些新特性。今天,我们把这些样例(含代码)发布在网上,这样你可以下载,并在你自己的机器上本地运行它们。
你可以在这里下载主题演讲中的示范(源代码,每个例程都包含了VS项目文件)。
主题演讲中的示范
下面是供下载的每个示范的一些细节:
PhotoBooth应用
PhotoBooth应用示范了你可以用Silverlight 4中新的网络摄像头(WebCam)和麦克风(Microphone)支持来做的一些有趣的事情,它允许你在浏览器中记录视频和照相,然后可以对它们施加效果(例如下面的膨胀效果),要过把瘾的话,还可以将任何一张照片发到 Twitter上, :-)。
条形码扫描器(BarCode Scanner)
条形码扫描器应用也使用了Silverlight 4中新的WebCam支持。它允许你扫描书背后的ISBN条形码,然后使用 Amazon web服务在线查询该书的细节:
富记事本(Rich Notepad)
富记事本应用展示了Silverlight 4中一些新的文本编辑特性。它允许你在浏览器中编辑rich text(多信息文本),支持 Bidi文字(包括阿拉伯文和希伯来文),同时支持从左到右(left-to-right)和从右到左(right-to-left, RTL)的控件布局(RTL示范如下,注意卷动条是在屏幕的左边),支持编程手法拷贝/粘贴到系统剪贴板,自定义右击上下文菜单,打印,和将文件从桌面拖放到浏览器中以做编辑等:
HTML Hosting(宿主)
HTML Hosting应用展示了如何在浏览器之外的应用中使用新的Silverlight 4 webbrowser控件(注:你必须在浏览器以外运行,该应用才会工作)。它允许你以交互的方式使用该控件(意即你可以点击其中的HTML,象一个应用一样运行)。它还允许你将宿主的HTML当作画刷,将它们施加到其他Silverlight控件上。为好玩,你可以点击下面的 MSDN.com 页,你会rick-rolled到YouTube上。你还可以把HTML当作画刷,将其刻成锯齿形, 尽管录像还在播放过程中(使用了宿主在HTML中的Flash):
了解详情
留意一下Tim Heuer的博客以及John Papa的博客,他们会经常性地发表有关Silverlight的贴子,会在不久的将来发表一些对上面的应用做详细介绍的贴子。
结语
你可以在这里下载主题演讲中的示范(源代码,每个例程都包含了VS项目文件)。它们可用于公开的Silverlight 4 Beta + SL4 VS工具支持中。它们提供了一个很棒的方式,在你自己的机器上重温主题演讲的内容,还可以向朋友下秀一下这些示范。
希望本文对你有所帮助,
Scott
附注: 在主题演讲中展示的Facebook应用不久也会提供下载。我们还在往其中添加更多的特性,做些修饰,一旦完成,我会写贴做介绍。