MVC学习系列——ActionResult扩展
首先,MVC扩展性非常强。
我从ActionResult扩展入手,因为我们知道微软ActionResult和其子类,有时候并不能满足所有返回值。
比如:我需要返回XML。
因此,现在我扩展XMLResult,继承ActionResult。
第一步:新建XmlResult
1 public class XmlResult:ActionResult 2 { 3 private object _data; 4 5 public XmlResult(object data) 6 { 7 this._data = data; 8 } 9 public override void ExecuteResult(ControllerContext context) 10 { 11 var serializer = new XmlSerializer(_data.GetType()); 12 var reponse = context.HttpContext.Response; 13 reponse.ContentType = "text/xml"; 14 serializer.Serialize(reponse.Output, _data); 15 } 16 }
第二步:为了演示,新建StudentViewModel类
1 public class StudentViewModel 2 { 3 public string ID { get; set; } 4 public string Name { get; set; } 5 public string Gender { get; set; } 6 }
第三步:在HomeController,增加GetXmlResult
1 public XmlResult GetXmlResult() 2 { 3 StudentViewModel viewModel = new StudentViewModel(); 4 viewModel.ID = "1"; 5 viewModel.Name ="Zhangsan"; 6 viewModel.Gender = "Man"; 7 8 return new XmlResult(viewModel); 9 }
第四步:测试
在IE输入Home/GetXmlResult