MVC3控制器和视图

问题描述:

好了,所以现在我的主控制器类我只是各有独立的东西返回一个视图,如:MVC3控制器和视图

public ActionResult Contact() 
    { 
     return View(); 

    } 

我有这个拍下来,因为它是不是很困难!但是我想知道的是,在这个行动结果中我还能做些什么?还有什么可以通过这个来完成的?

你可以返回,而不是一个视图中的硬编码的内容:

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

因此,大家可以看到有很多的事情可以做。问题是:你想做什么?

+0

谢谢!超级有用。尽管如此,为了回答这个问题,我不知道我想做什么!我正在做一些最后的项目,以便我可以了解有关MVC3和相关事情的所有内容,并且我想要包含更多内容,而不仅仅是直观的视图。 – 2012-07-16 17:38:00

+0

你可以添加partialview吗? JavaScript调用非常方便。 :) – Silvermind 2012-07-16 18:10:22

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