好的,现在在我的主控制器类中,我只是让每个单独的东西返回一个视图,例如:
public ActionResult Contact()
{
return View();
}
我有这个向下拍,因为它不是很困难!不过,我想知道的是,在这个 actionresult 中我还能做什么?通过这个可以完成哪些其他事情?
好的,现在在我的主控制器类中,我只是让每个单独的东西返回一个视图,例如:
public ActionResult Contact()
{
return View();
}
我有这个向下拍,因为它不是很困难!不过,我想知道的是,在这个 actionresult 中我还能做什么?通过这个可以完成哪些其他事情?
您可以返回硬编码的内容而不是视图:
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" });
}
如您所见,您可以做很多事情。问题是:你想做什么?
通常在控制器上的操作中,您将从数据存储中获取数据并将其返回到视图。如果您询问有哪些类型的 ActionResult,您可以在此处找到它们的列表。