让你的视图页面更简洁

我经常听见抱怨说,在使用默认的视图引擎时,页面中总是存在类似于页面声明(page directive)这样烦人的东西。实际上很大程度上这些东西也是可以定制的。ASP.NET组的隐藏大牛之一,David Ebbo(在此致敬),在这方面给予了我一些指点。

首先,让我们来看看修改之前和之后的效果。

噢,这可不是WebForms中View的样子,我知道你会这么说:

我的页面声明(page directive)呢!?所有的Content控件的ID呢!?母版页的声明呢!?OMG,幸亏runat="server"还在,不然我真的要失眠了。

其实ASP.NET提供了很多种方法,可以将这些默认值写入Web.config中。我在这里所做的(你一样可以在ASP.NET MVC和WebForms项目中这样做),只是设定一部分默认值。

拿ASP.NET MVC的项目来说,我打开Views目录下的Web.config文件(注意不要被根目录下的Web.config文件迷惑了)。

这个Web.config是为所有Views提供的。我做了以下更改:

1、设置compilation节点下的defaultLanguage属性为"C#"。
2、设置pages节点下的masterPageFile属性指向"~/Views/Shared/Site.master"。
3、设置pages节点下的pageBaseType属性为"System.Web.Mvc.ViewPage"

下面是我修改完后的Web.config文件(为了看得更清楚一些,我删除了其他的一些节点和属性):

做完这些以后,只要我的View不覆盖这些设置,都不需要再做页面声明(page directive)了。

当然,如果你要使用强类型的View,你需要页面声明来指定ViewPage的类型,但是要做的也只有这么多。

另外不要忘了,你还可以搞定那些丑陋的Register声明,只需要在Web.config中注册自定义控件

你还可以把引入命名空间的,丑陋的Import声明也放进Web.config中

使用了上面的这些技巧,你会得到一个更加清爽和漂亮的View页面。这里所展示的不只是给View页面加入语法糖。更重要的是,控制代码尽量少,并且专注于表现。Rob已经写了一篇关于这方面的文章

遗憾的是,还没有可以将runat="server"也省略掉的方法。你可以把他当做是你高中时的一起混的哥们,虽然老婆不喜欢,但是你们在一起时常能回忆起很多往事。

;-)

希望你喜欢本篇中的这些小技巧,并把它们应用到你的View页面中。说到底,页面的工作不就是让我们的世界看起来美好吗?

本文翻译自Phil Haack的博客,原文Put Your Views (and Pages) On a Diet

 

PS:将命名空间的Import声明加入Web.config带来的好处,不仅是在页面中可以用ClassName代替Namespace.ClassName,甚至在Page Directive中也可以简写,如本来应该写成这样的代码:

<% @ Page Inherits = " System.Web.Mvc.ViewPage<XXX.YYY.ZZZ> "   %>

可以直接这样写了:

<% @ Page Inherits = " System.Web.Mvc.ViewPage<ZZZ> "   %>

只要你在Web.config中Import进了XXX.YYY!!

转载于:https://www.cnblogs.com/princescar/archive/2009/08/06/make-view-simpler.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值