网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

让ASP.NET MVC页面返回不同类型的内容

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/13

1 2 下一页

  在ASP.net MVC的controller中大部分方法返回的都是ActionResult,更确切的是ViewResult。它返回了一个View,一般情况下是一个HTML页面。但是在某些情况下我们可能并不需要返回一个View,我们可能需要的是一个字符串,一个json或XML格式的文本,一个图片。 ActionResult是一个抽象类,我们平时比较常用的ViewResult是它的派生类,所以我们也可以写一个StringResult、 XMLResult、ImageResult来实现上面提到的需求。由于返回字符串可以有更简单的方法,直接将需要返回字符串的方法的返回值设置成 string型就可以了,JsonResult在ASP.NET MVC中已经有提供。所以下面只演示XmlResult和ImageResult。 ASP.NET MVC项目是开源的(可以在http://www.codeplex.com/aspnet下载源代码),所以我们可以参考其中ViewResult和 JsonResult的代码进行改写。主要的思路是设置返回数据流HTTP Header中的Content-Type,然后将要返回的内容写入Response中。

  先演示XmlResult

  XmlResult的代码:

1 public class XmlResult:ActionResult 
2     {  
3         // 可被序列化的内容  
4         object Data { get; set; }  
5   
6         // Data的类型  
7         Type DataType { get; set; }  
8   
9         // 构造器 
10         public XmlResult(object data,Type type) 
11         { 
12             Data = data; 
13             DataType = type; 
14         } 
15  
16         // 主要是重写这个方法 
17         public override void ExecuteResult(ControllerContext context) 
18         { 
19             if (context == null) 
20             { 
21                 throw new ArgumentNullException("context"); 
22             } 
23  
24             HttpResponseBase response = context.HttpContext.Response; 
25  
26             // 设置 HTTP Header 的 ContentType 
27             response.ContentType = "text/xml"; 
28  
29             if (Data != null) 
30             { 
31                 // 序列化 Data 并写入 Response 
32                 XmlSerializer serializer = new XmlSerializer(DataType); 
33                 MemoryStream ms = new MemoryStream(); 
34                 serializer.Serialize(ms,Data); 
35                 response.Write(System.Text.Encoding.UTF8.GetString(ms.ToArray())); 
36             } 
37         } 
38     }

(责任编辑:admin)

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号