【问题标题】:MVC3 controllers and viewsMVC3 控制器和视图
【发布时间】:2012-07-16 17:17:22
【问题描述】:

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

    public ActionResult Contact()
    {
        return View();

    }

我有这个小技巧,因为它不是很困难!不过,我想知道的是,在这个 actionresult 中我还能做什么?通过这个还有什么其他的事情可以完成?

【问题讨论】:

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


    【解决方案1】:

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

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

    如您所见,您可以做很多事情。问题是:你想做什么?

    【讨论】:

    • 哇,谢谢!超级有帮助。不过,要回答最后的问题,我不知道我想做什么!我正在做一个最终项目,以自学有关 MVC3 和相关事物的所有知识,我想加入更多的东西,而不仅仅是直接的视图。
    • 可以添加局部视图吗?对于 JavaScript 调用非常方便。 :)
    【解决方案2】:

    通常在控制器上的操作中,您将从数据存储中获取数据并将其返回到视图。如果您要问有哪些类型的 ActionResults,您可以找到它们的列表here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      相关资源
      最近更新 更多