好的,现在在我的主控制器类中,我只是让每个单独的东西返回一个视图,如下所示:
public ActionResult Contact()
{
return View();
}
我已经掌握了这个,因为它并不是很难!我想知道的是,在这个操作结果中我还能做些什么?通过这个还能做些什么呢?
发布于 2012-07-16 17:19:42
您可以返回硬编码的内容,而不是视图:
public ActionResult Contact()
{
return Content("Hello");
}
您可以返回JSON:
public ActionResult Contact()
{
return Json(new { Foo = "bar" }, JsonRequestBehavior.AllowGet);
}
你可以返回javascript:
public ActionResult Contact()
{
return JavaScript("alert('Hello World');");
}
您可以直接流式传输文件:
public ActionResult Contact()
{
return File(@"c:\work\foo.pdf", "application/pdf", "foo.pdf");
}
你可以返回一个404:
public ActionResult Contact()
{
return HttpNotFound();
}
你可以返回401:
public ActionResult Contact()
{
return new HttpUnauthorizedResult();
}
如果内置的操作结果不能满足您的需求,您可以随时编写一个自定义操作结果。例如,返回XML的代码:
public class XmlResult : ActionResult
{
private readonly object _data;
public XmlResult(object data)
{
if (_data == null)
{
throw new ArgumentNullException("data");
}
_data = data;
}
public override void ExecuteResult(ControllerContext context)
{
var response = context.HttpContext.Response;
response.ContentType = "text/xml";
var serializer = new XmlSerializer(_data.GetType());
serializer.Serialize(response.OutputStream, _data);
}
}
然后:
public ActionResult Contact()
{
return new XmlResult(new { Foo = "Bar" });
}
因此,正如您所看到的,您可以做很多事情。问题是:你想做什么?
发布于 2012-07-16 17:20:48
通常,在控制器上的Action中,您将从数据存储中获取数据,并将其返回给视图。如果你想知道有哪些类型的ActionResults,你可以找到here的列表。
https://stackoverflow.com/questions/11509265
复制