MVC3控制器和视图

时间:2012-07-16 17:17:23

标签: asp.net asp.net-mvc-3 views controllers

好的,现在在我的主控制器类中我只是让每个单独的东西都返回一个类似的视图:

    public ActionResult Contact()
    {
        return View();

    }

我对此有所了解,因为它不是很难!我想知道的是,在这个行动结果中我还能做些什么呢?通过这个可以完成哪些其他事情?

2 个答案:

答案 0 :(得分:3)

您可以返回硬编码内容而不是视图:

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" });
}

所以你可以看到你可以做很多事情。问题是:你想做什么?

答案 1 :(得分:0)

通常在Controller上的Action中,您将从数据存储中获取数据并将其返回到视图。如果你问的是什么类型的ActionResults,你可以找到它们的列表here