快速业务通道

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20
></dd>
19      <dt>类别ID: </dt>
20      <dd><%= announce.Category %></dd>
21      <dt>内容: </dt>
22      <dd><%= announce.Content %></dd>
23      <dt>发布时间: </dt>
24      <dd><%= ViewData["Time"] %></dd>
25    </dl>
26    <p><%= ViewData["ExecutingLogger"] %></p>
27    <p><%= ViewData ["ExecutedLogger"] %></p>
28  </div>
29</body>
30</html>

现在可以提交一则公告看结果了:

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

没有问题, 拦截器方法顺利执行,而且从时间可以看出,OnActionExecuting先执行,Action执行,然后OnActionExecuted执行。

下面我们来看看 异常拦截器的效果。要触发异常拦截器,首先要抛出一个异常,所以,我们在业务逻辑组件做点手脚。将MockAnnounceServices的Release方法 改成如下:

1/**//// <summary>
2/// 发布公告
3/// </summary>
4/// <param name="announce"></param>
5public void Release(AnnounceInfo announce)
6{
7  throw new Exception("发布公告失败了!原因?没有原因!我是业务组件,我说失败就失败!");
8  return;
9}

另外,我们还要实现一个Error.aspx视图,这是在异常拦截器中定义的错误视图。我们将它新建在Views/Shared下就可以了。 顺便说一下,共用的视图一般放在Shared下,因为ASP.NET MVC的视图寻找机理是当与Controller同名目录下不存在时,就到Shared下看看有没 有此视图。

Error.aspx:

1<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Error.aspx.cs" Inherits="MVCDemo.Views.Shared.Error" %>
2
3<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1- transitional.dtd">
4
5<html xmlns="http://www.w3.org/1999/xhtml" >
6<head runat="server">
7  <title></title>
8</head>
9<body>
10   <div>
11    <h1>系统发生异常</h1>
12    <%= ViewData["ErrorMessage"] % >
13  </div>
14</body>
15</html>

好了,现在我们再提交新公告,会返回如下结 果:

ASP.NET MVC案例教程(基于ASP.NET MVC beta)——第六篇:拦截器

很明显,业务组件抛出了异常,但是我们 的Action方法中并没有用try...catch处理,但是异常拦截器成功拦截了异常,并做了相应处理。

我们再回过头看看,使用了拦截器后 ,代码是不是很清晰呢。

小结

通过本文,朋友们应该可以掌握拦截器的基本使用以及使用它在表示层实现AOP了。下一篇作为本 系列的终结篇,将对ASP.NET MVC做一个全面的讨论,并与Web Form模型进行一个比较,使朋友们看清其优势、劣势,从而更好的学习使用这个 框架。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号