现在的位置: 首页 > 综合 > 正文

ASP.NET MVC 3 : @model Razor中的新关键字

2013年10月03日 ⁄ 综合 ⁄ 共 1613字 ⁄ 字号 评论关闭

 

原文 :   ASP.NET MVC 3: New @model keyword in Razor

 

两周之前我们发布了  ASP.NET MVC 3 Beta Release 。它支持即可实施部署,同时包含了很多不错的改进、增强。

你可以在我的Beta版发布博客中看到ASP.NET MVC的3个新的特性摘要。可以阅读我之前ASP.NET MVC3预览版博客,学习到新特性之外的功能。

这篇文章是“迷你文章”系列的第一章,我准备写的是关于ASP.NET MVC3 Beta版功能的详细描述。在今天的文章里,我将讲述新Razor视图引擎中新支持的@model指令,它能让视图文件更简洁干净。

Razor 基础

ASP.NET MVC3 有一个名为"Razor" 的新视图引擎选项 (同时继续支持现有的.aspx视图引擎) 

在我走进Razor (Introducing Razor) 这篇博文中,你将学习到更多Razor 的语法和我们为什么要使用它。   

如果你还没有读过那篇文章,建议你现在花几分钟看看。(下面的文章会假设你已经读过了) 

当你读过 走进Razor  这篇文章后,也读下我的 ASP.NET MVC 3预览 这篇文章 看一下ASP.NET MVC 3中 Razor 的例子。   

新@model指令 

让我们看一下在ASP.NET MVC3 Beta版中新加的一个功能 @model 指令。这个指令提供了一个简洁干净的方式去引用视图文件中的强类型数据。 

看它在实际中的情况,来看一个很简单的场景,我们想要通过一个产品的URL列出数据库中产品的分类。

下面用一个简单的 ProductController 实现了这个功能。它从数据库返回商品目录列表,然后将他们返回给视图文件用适合的HTML 呈现在浏览器上。

在 ASP.NET MVC3 首个预览版中引用数据

如果我们已经在ASP.NET MVC3 首个预览版中使用过Razor,那么在我们的Index.cshtml视图文件的顶部应该有一个@inherit指令块,标明我们想从视图文件返回 “System.Web.Mvc.WebViewPage<TModel>” 类型。我们标明想让视图文件返回的类型是强类型。

 

 

这是可以工作的(在ASP.NET MVC3中仍然支持),但是有点繁琐。

 

在 ASP.NET MVC3 Beta 版中使用新关键字 @model 引用数据

 

我们在ASP.NET  MVC3 Beta 版中新增了 @model 指令, 当你想在 View 视图中引用强类型 model 时, 它能够提供更简洁干净的方式。

 

你现在只需要在你的 Razor 视图文件顶端 使用@model 引用相关的强类型model 就可以了,不需要再使用 @inherits 或 指定一个视图基类了。

 

在概念上上面的语法和之前是一样的(除了少了许多字符外),它更容易阅读和书写。

 

下面的 Index.cshtml  视图文件告诉我们如何呈现出之前最开始截图的效果。

 

 

你可能会问一个问题: 如果没有定义,视图文件从哪里派生? 默认情况,Razor会让视图继承自System.Web.Mvc.WebViewPage<TModel> 基类。你也可以通过修改视图目录下的web.config文件来更改默认基类(除此之外也可以在视图文件中导入命名空间)。这能帮助你在你的视图文件中保持干净(同时也DRY)的语法,即使你想使用自己创建的定制视图基类。

 

注意: Visual Studio 在Razor内的代码/标记智能感知在本月Beta版还不支持。你能在几个星期之后看到它们——在Razor文件中将支持针对HTML,Javascipt,CSS和C#/VB编码的全部代码智能感知。

 

总结

 

我们在ASP.NET MVC3 和Razor发布中所坚持的宗旨是让你所写的代码更干净简洁。上面提到的 @model 关键字只是一个小特性,但是在让视图文件便于读写中作出了贡献。在以后的文章中我将介绍ASP.NET MVC 3 Beta版中的一些其他的类似改进。

希望对您有所帮助,

Scott

抱歉!评论已关闭.