一起谈.NET技术,[翻译]ASP.NET MVC 3 RC 发布通告

  今天早上,ASP.NET组发布了ASP.NET 3 RC版(release candidate)。你们可以从这里进行下载here.

  ASP.NET MVC 3是个很完美的发布,增加了大量的功能改进。它可以向后兼容ASP.NET MVC V1 和 V2,可以轻易的升级你现有的项目(可以阅读发布须知,根据里面的步骤去做)。你还可以通过我之前发表的博客文章来学习ASP.NET MVC 3的很多功能。 

  今天的ASP.NET MVC 3 RC build 包含了一些附加的功能改进(除了修正了一些bug外,还有工具改进等等)。这篇博文涵盖了今天的发布的所有改进细节。请查看我以前的文章以了解更多的关于ASP.NET MVC 3 previews/betas版的特性和改进的介绍 

  Visual StudioRazor的智能提示支持: 

  Visual Studio和免费的Visual Web Developer Express提供了对Razor-based 视图模板的支持。当你在razor based视图模板里编辑时,支持HTML, C#, VB, JavaScript 和 CSS的智能提示:

 

 

  你可以获得完全的C#/VB代码的智能提示,包括HTML helper方法(所有的已经存在于ASP.NET MVC的helper方法同样可以在Razor based 视图下良好的工作。

 

  我们同样提供了Razor关键词和指令的智能提示。

 

 

  注意:参见下面的图所示的,当设置@model指令给一个Product时,强类型的HTML helpers现在可以正确在“Product” 类里提供智能提示。

 

 

  我们仍在对editor做最后的性能测试,如果你遇到这样的问题:智能提示好像不能工作或者看起来比较慢。请给我们发送报告,这样我们可以解决它。

  NuGet 管理包

  我上个月发了一篇文章是关于一个新的,开源管理包的,那时我们称呼它为“NuPack”,在此我们继续称它为NuPack to NuGet。今天ASP.NET MVC 3 release可以把它作为安装的一个选择进行自动安装。

  你可以很容易的在你的项目里使用NuGet下载和安装商业的和开源库。比如:安装Nhibernate和LINQ extension library,我可以在Visual Studio 的NuGet管理包命令行输入“install-package NHibernate.Linq”

 

  当我敲入“enter”键时,NuGet将会自动下载所有的类库或者他们的依赖项然后建立我自己的ASP.NET MVC 3区使用它。

 

  现在有数以百计的.net开源库在NuGet包的feed里,以后还会继续的增加。我们认为NuGet可以使得所有的.net开发人员通过社区来改变和共享这些功能,以创建更加好的.Net项目k

  参看Scott Hanselman’s的讲话

  Scott Hanselman 今年谈了很多关于PDC的东西,他把它称为“ASP.NET + Packaging + Open Source = Crazy Delicious”。主要讲了如何使用ASP.NET MVC 3, Razor, NuGet, EF Code First, SQL CE 和 其他的一些比较酷的工具做一个完整项目。

 

  你可以观看在线演讲或者下载来看。

  - Low Bandwidth WMV Video (about 258 megs)

  - Low Bandwidth MP4 Video (about 120 megs)

  我强烈建议你们看看这个视频,它是很有趣的,演示ASP.NET MVC 3 stack (特别是 NuGet)如何在一起工作的。

  Partial Page Output Caching

  部分页输出缓存

  ASP.NET MVC在第一版的时候就开始支持整页缓存。从ASP.NET MVC V3开始,我们也可以支持部分页缓存了。这可以很容易的使你部分缓存或者一个response的片段。在很多情况下,这是很有用的。

  缓存页面的一个区域是很容易做到的。你可以在一个视图的子action中简单的封装你认为需要缓存的区域。比如:下面我们有一个product列表的页,我想缓存在页面中缓存“Daily Specials”部分。

 

  在上面,我使用Html.Action() helper方法去调用SalesController.DailySpecials()子action。注意:我在上面传递了一个category参数,这样我可以定制category。我是基于产品类型来显示用户正在浏览的产品。(比如他们正在看“computer”产品,我可以显示一系列的和“computer”相关的东西,如果他们正在浏览(“baby” 产品我可以展示尿布).

  下面是SalesController.DailySpecials()方法的代码片段。它获取合适的产品列表,然后使用Razor partial视图模板进行展示。

  注意在DailySpecials上面有个attribute,它指示需要缓存的部分内容(缓存一小时)。我们一样可以根据category参数来自动缓存内容。

  如果我们有10个产品类,我们的DailySpecials方法将会缓存10个不同的列表,这些不同的列表(公司或尿布)将会依赖用户的浏览进行缓存。重要的是:如果这些部分内容被缓存起来了,我们不用访问数据库或者处理代码逻辑,这将会减轻服务器的负担和提升响应速度。

  这个新的装置提供了完美清晰的和容易的方式添加你部分页缓存到你的项目中去。

  隐式javascript和验证

  我在我的一些博文(my blog post)中讨论了几个在ASP.NET MVC 3中的验证和JavaScript/AJAX改进(first ASP.NET V3 preview release

  其中一个比较出色的ASP.NET MVC V3的改进是AJAX 和 Validation helpers将会默认使用unobtrusive JavaScript。隐式javascript可以避免混杂javascript脚本到html标签里,取代的是,可以使用HMTL5的数据约定进行代码分离,这可以很方便的在旧的浏览器包括IE6上工作。这会使你的HTML更加小巧和清晰,可以更加随意的切换和定制js库。ASP.NET MVC 3的Validation helpers现在默认使用jQueryValidate插件。

  默认开放客户端验证

  以前各种版本的ASP.NET MVC(包括上个月的ASP.NET MVC V3 beta),你需要显式的在视图里调用Html.EnableClientValidation()去启动客户端验证。从RC版开始,我们不需要那么做了,客户端验证(使用隐式方法(unobtrusive approach))默认是启动的。(你可以通过web.config配置来关闭客户端验证)。

  你仍然需要在你的站点中引用相关的jQuery+jQuery验证库以使用客户端验证。因为显式的引用javascript文件,你能够选择宿主在你的服务器上或者从CDN(内容传输网络)引用他们,比如微软或者Google的。

  远程验证

  今天RC版的一个新的附加的验证特性就是通过[Remote]验证attribute使你能够利用jQuery验证插件的远程验证支持。这可以促使客户端验证库能够自动的调用定义在服务端的自定义方法去执行验证逻辑,而这些方法之前只能在服务端完成。

  细粒度的请求验证

  ASP.NET MVC包含内置的请求验证支持以协助避免XSS和HTML注入攻击。有时候,在某些情况下,你需要显式的关闭请求验证,这样用户可以提交HTML的内容(比如博客作者或者CMS内容编辑)

  现在你可以添加[SkipRequestValidation] attribute到models 或者 viewmodels,以禁用请求验证

  添加上面的attribute到你的model/viewmodel,仅需一次设置就可以在任何情况下应用他。

  Other Improvements in the RC

  RC版的其他改进

  下面是今天的RC版的一些比较好的改进:

  改进的“New Project”对话框

  当你创建一个ASP.NET MVC 3项目时,对话框如下:

  上面的对话框已经被扩展了,你可以添加额外的启动程序模板,视图引擎和单元测试框架。我们以后还会增加启动程序模板(将会显示在列表里)使你能够更好的创建新项目。

  Scaffolding Improvements

  许多的小的但是不错的改进已经加入到默认的ASP.NET MVC scaffold templates,这些模板将会很好的识别models的ID/主键,然后恰当的处理他们。(比如他们现在可以创建合适的“edit/delete”等链接。这些“Create/Edit”现在可以默认使用Html.EditorFor()来代替Html.TextBoxFor(),这样你就可以比较轻易的定制你的models展示

  添加视图对话框的改进

  当你使用“Add->View”对话框添加一个强类型视图的时候,添加视图对话框可以过滤掉很多不可用的类型,以某种存储或者组织的形式使你更加容易找到它

  对Session-less Controller的支持

  你现在可以指示你是否需要一个session-state的controller类,如果这样,你可以设置它可读写或者只读。

  没有Razor Model Dynamic时

  如果你不想在Razor视图中指定一个@model指令,页面上的“model”属性将会默认动态的而不是object。这样你可以执行延迟绑定,之前你需要在顶行添加一个‘@model dynamic”才能做到。

  新的关于Html.LabelFor() 和 Html.LabelForModel()的重载

  关于LabelFor() 和 LabelForModel()的新的重载方法使你能够随意的指定或者 重载label text。

  下载相关

  在here你可以找到ASP.NET MVC 3 RC的安装程序链接。它目前使用于VS 2010和免费的Visual Web Developer 2010 Express。

  在安装这个版本之前请确认你已经卸载了任何之前已经安装ASP.NET MVC 3 releases,当然也包括之前的ASP.NET Web Pages安装程序。

  摘要

  今天的ASP.NET MVC 3 RC有很多的优势使ASP.NET MVC的web开发更加好用。如果你对这次发布由任何的问题或者建议,请在www.asp.netASP.NET MVC forum里提交。ASP.NET MVC团队将会密切关注并提供相应的帮助。我们计划花费几周时间来关注这些回馈,协调完成和解决一些bug。对你提供的问题我们先表示感谢。

时间: 2024-09-14 22:01:04

一起谈.NET技术,[翻译]ASP.NET MVC 3 RC 发布通告的相关文章

[翻译]ASP.NET MVC 3 RC 发布通告

今天早上,ASP.NET组发布了ASP.NET 3 RC版(release candidate).你们可以从这里进行下载here. ASP.NET MVC 3是个很完美的发布,增加了大量的功能改进.它可以向后兼容ASP.NET MVC V1 和 V2,可以轻易的升级你现有的项目(可以阅读发布须知,根据里面的步骤去做).你还可以通过我之前发表的博客文章来学习ASP.NET MVC 3的很多功能. 今天的ASP.NET MVC 3 RC build 包含了一些附加的功能改进(除了修正了一些bug外,

一起谈.NET技术,ASP.NET MVC 2示例Tailspin Travel UI层分析

Tailspin Travel 是一个旅游预订的应用程序示例,最新版本采用ASP.NET MVC 2技术构建,主要使用 DataAnnotations 验证, 客户端验证和ViewModels,还展示了许多Visual Studio 2010, .NET Framework 4, 和Windows Server AppFabric的技术,参看ASP.NET MVC 2示例Tailspin Travel. Tailspin Travel设计的技术比较多,今天我们来看看界面(UI)上的技术,在UI层

一起谈.NET技术,ASP.NET MVC 2中使用jQuery UI控件详解

问:我想给我的ASP.NET MVC输入表单添加一个日期选择控件,但模型-视图-控制器(MVC)并没有提供这样的辅助方法,我该如何添加控件? 答:和ASP.NET Web表单不一样,MVC架构没有提供可以在设计面板中拖放的有状态的服务端控件,相反,MVC鼓励使用简单的HTML布局元素和基于数据的标签作为页面布局的要素,功能和最终的布局用客户端JavaScript和CSS样式表控制. MVC提供了一套基于HtmlHelper的扩展方法渲染大部分HTML标签,对于更复杂的功能,你需要自己编写HTML

一起谈.NET技术,ASP.NET MVC的全球化方案

由于项目需要最近在学习ASP.NET MVC.在实践中,网站要支持多语言,需要全球化.在MVC下我实现了一个全球化框架,在这里与各位分享一下,不足之处也请各位看官指教. 让URL支持全球化 经常上微软网站的朋友可能很熟悉类似包含..\zh-cn\.....\en-us\..的url形式,这就是本文要使用的全球化方案.当然还有使用QueryString传递参数的方案,基本思路我想是类似的. 由于MVC天生的URL路由原理,使得这个方案很容易被接受. 基本思路 这个方案的基本思路是: 1.当用户访问

一起谈.NET技术,ASP.NET MVC 2生成动态表单的一种最简单的思路

在BPM.OA等系统中,都会存在一个表单设计器.有些是通过操作gridview来完成一个表单的设计:有些是通过类似VS拖拽的方法完成一个表单的设计.很明显后面一种优越于前面一种.无论是哪种,最后都会产生一些XML之类的表单结构的数据. 这篇文章将讲述,在表单设计器设计好表单之后,在ASP.NET MVC中如何将表单结构的xml转换成实际应用系统中的表单.看下面一个xml文件,我们假设它是由一个表单设计器设计出来的. <?xml version="1.0" encoding=&qu

一起谈.NET技术,ASP.NET MVC &amp;amp; EF 构建智能查询 二、模型的设计与ModelBinder

在第一篇中,我讲解了我们要做智能查询的原因,以及基本的解决方案设计.从这篇开始我们开始讲解它的实现过程. 其实在写这一系列文章之初,我其实是想由底至上去讲解,但是我又整理了一遍代码才发现,其实如果不了解最表面的东西,也是不太好深入的. 所以我们的第二篇文章就来讲一下我们这个智能查询框架中最浅,但也是使用最频繁的部分,也就是Model. 首先我们的Entity  或者说数据库的结构如下: 另外如下面代码,我们有一个用于传递name=value对,及查询谓词的model: public Action

一起谈.NET技术,ASP.NET MVC 3 概述

原文地址:http://www.asp.net/mvc/mvc3 导言 ASP.NET MVC3 在 ASP.NET MVC 1 和 2 的基础上,增加了大量的特性,使得代码更加简化,并且可以深度扩展.这篇文章提供包含在此次发布中的许多新特性的说明,分为以下部分: Razor 视图引擎 支持多视图引擎 Controller 改进 JavaScript 和 Ajax Model 验证的改进 依赖注入 Dependency Injection 的改进 其他新特性 Razor 视图引擎 ASP.NET

一起谈.NET技术,ASP.NET MVC 3 Beta初体验之实用的WebMail

Asp.net MVC 3 Beta中提供了非常实用发送邮件的组件:WebMail.我试用了一下,和System.Web.Mail类似.这篇文章将简单介绍一下这个组件的使用.通过分成不带附件的邮件发送和带附件的邮件发送两种情况进行讲解.用一个请求帮助的应用场景为例. 不带附件的邮件发送 首先定义Controller.EmailRequest用于请求一个发送邮件的页面,ProcessRequest用去处理发送邮件的请求,并在View中发送邮件. 代码 [HttpGet]public ActionR

一起谈.NET技术,ASP.NET MVC中对数据进行排序的方法

本系列是讲解如何在asp.net mvc中对数据进行展示.排序.分页等的系列文章.在上周的文章中,一步一步教会了大家如何使用ASP.NET MVC框架去的展示数据.在上周的文章中,我们先用Visual Studio创建了一个新的ASP.NET MVC应用程序,接着连接到了Northwind数据库,并展示了如何使用微软的LINQ-SQL的工具去访问数据库中的数据,接着指导如何去实现视图层去展示产品信息及如何设计控制器. 本文是在上一篇文章的例子基础上,展示了如何去实现数据的双向排序.如果你是已经熟