mvc Model关键字

两周之前我们发布了 ASP.NET MVC3 Beta版。它支持“立即生效”配置,包括很多不错的改进、增强。 你能在我的 Beta版发布帖子中看到关于ASP.NET MVC3中新功能的摘要。还可以阅读我写的关于 首个ASP.NET MVC3 预览版的帖子,获知在首个Asp.NET MVC3预览版中出现的其他功能。

这篇博文是我将要写的关于ASP.NET MVC3 Beta功能详细描述的“迷你帖子”系列中的第一篇。在这篇文章中,我将讨论新Razor视图引擎所支持的@model指令,它能使视图文件更简洁干净。

Razor基础

ASP.Net MVC3配有一个名为Razor的新视图引擎(除继续支持、改进现有的.aspx视图引擎之外)。

你能从我之前的 介绍Razor的博文中获知更多关于Razor的信息,以及引进它的原因。如果你还没有阅读过那篇文章,现在花几分钟看看吧(因为下面讲的内容将假定你已经读过了)。

一旦你读了 介绍Razor的帖子,也请读下我的 ASP.NET MVC 3预览, 把我里面写的ASP.NET MVC 3 Razor的示例也过目一下。

新@model指令

我们现在看看在ASP.NET MVC3 Beta版中添加的一个新功能——@model指令。这个指令用一个简单而干净的方式实现视图文件对强类型模型的引用。

想要看具体操作,让我们来看一个简单的场景:我们想要实现一个列出数据库内的商品目录的商品URL

下面用一个简单的商品控制器(ProductController)实现商品URL。它从数据库返回一列商品目录,然后将他们传到一个视图文件,并在浏览器上以合适的HTML 呈现出来。

用首个ASP.Net MVC3 预览版引用模型

如果我们已经用首个ASP.NET MVC3 预览版使用过Razor, 我们的Index.cshtml视图文件的开端应有一个@inherit语句,表示我们希望从“System.Web.Mvc.WebViewPage<TModel>”继承视图。 我们然后要求通过传入视图模型类型强命名视图文件。

这是有用的(还在ASP.Net MVC3中支持),但是难免有点冗长。

使用ASP.NET MVC 3 Beta版和新@模型语句来引用模型

我们已经在ASP.NET MVC 3 Beta版中添加新@model指令以提供一个更干净简洁的方式来指明你想要在视图文件中引用强类型模型类。你现在只需在你的Razor视图文件的顶端写上@model StrongModelType就行了, 再无需有一个@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版中的一些的别的类似新改进。

希望对您有所帮助。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值