MVC学习系列——ActionResult扩展

时间:2023-03-08 16:39:10

首先,MVC扩展性非常强。

我从ActionResult扩展入手,因为我们知道微软ActionResult和其子类,有时候并不能满足所有返回值。

比如:我需要返回XML。

因此,现在我扩展XMLResult,继承ActionResult。

第一步:新建XmlResult

 public class XmlResult:ActionResult
{
private object _data; public XmlResult(object data)
{
this._data = data;
}
public override void ExecuteResult(ControllerContext context)
{
var serializer = new XmlSerializer(_data.GetType());
var reponse = context.HttpContext.Response;
reponse.ContentType = "text/xml";
serializer.Serialize(reponse.Output, _data);
}
}

第二步:为了演示,新建StudentViewModel类

 public class StudentViewModel
{
public string ID { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
}

第三步:在HomeController,增加GetXmlResult

  public XmlResult GetXmlResult()
{
StudentViewModel viewModel = new StudentViewModel();
viewModel.ID = "";
viewModel.Name ="Zhangsan";
viewModel.Gender = "Man"; return new XmlResult(viewModel);
}

第四步:测试
在IE输入Home/GetXmlResult

MVC学习系列——ActionResult扩展