• [转]Asp.net MVC 中Controller返回值类型ActionResult


    本文转自:http://blog.csdn.net/pasic/article/details/7110134

    Asp.net MVC中Controller返回值类型
    在mvc中所有的controller类都必须使用"Controller"后缀来命名 并且对Action也有一定的要求:
    • 必须是一个public方法
    • 必须是实例方法
    • 没有标志NonActionAttribute特性的(NoAction)
    • 不能被重载
    • 必须返回ActionResult类型
    如:
    1. publicclass MyController : Controller 
    2.    // 必须返回ActionResult类型  
    3.     public ActionResult HelloWorld() 
    4.     { 
    5.         ViewData["Message"] = "Hello World!"
    6.         return View(); 
    7.     } 
    public class MyController : Controller
    {
       // 必须返回ActionResult类型
        public ActionResult HelloWorld()
        {
            ViewData["Message"] = "Hello World!";
            return View();
        }
    }
    下面列举Asp.net MVC中Controller中的ActionResult返回类型 1、返回ViewResult视图结果,将视图呈现给网页
    1. public ActionResult About() 
    2.     return View(); // 参数可以返回model对象  
        public ActionResult About()
         {
            return View(); // 参数可以返回model对象
         }
    2、 返回PartialViewResult部分视图结果,主要用于返回部分视图内容在View/Shared目录下创建ViewUserControl.cshtml部分视图 
    1. public ActionResult UserControl() 
    2.      ViewBag.Message = "部分视图"
    3.      return PartialView("ViewUserControl"); 
           public ActionResult UserControl()
            {
                ViewBag.Message = "部分视图";
                return PartialView("ViewUserControl");
            }
           页面调用@ViewBag.Message 将输出“部分视图” 3、 返回ContentResult用户定义的内容类型
    1. public ActionResult Content() 
    2.    return Content("Test Content", "text/html"); // 可以指定文本类型  
            public ActionResult Content()
            {
               return Content("Test Content", "text/html"); // 可以指定文本类型
            }
    页面输出“Test Content”;此类型多用于在ajax操作中需要返回的文本内容 4、 返回JsonResult序列化的Json对象      
    1. public ActionResult Json() 
    2.      Dictionary<string, object> dic = new Dictionary<string, object>(); 
    3.      dic.Add("id", 100); 
    4.      dic.Add("name", "hello"); 
    5.      return Json(dic, JsonRequestBehavior.AllowGet); 
           public ActionResult Json()
            {
                Dictionary<string, object> dic = new Dictionary<string, object>();
                dic.Add("id", 100);
                dic.Add("name", "hello");
                return Json(dic, JsonRequestBehavior.AllowGet);
            }
    主要用于返回json格式对象,可以用ajax操作;注意:需要设置参数,JsonRequestBehavior.AllowGet,否则会提示错误:此请求已被阻止,因为当用在 GET 请求中时,会将敏感信息透漏给第三方网站。若要允许 GET 请求,请将 JsonRequestBehavior 设置为 AllowGet。 5、返回JavaScriptResult可在客户端执行的脚本
    1. public ActionResult JavaScript() 
    2.     string str = string.Format("alter('{0}');", "弹出窗口"); 
    3.     return JavaScript(str); 
            public ActionResult JavaScript()
            {
                string str = string.Format("alter('{0}');", "弹出窗口");
                return JavaScript(str);
            }
    但这里并不会直接响应弹出窗口,需要用页面进行再一次调用。这个可以方便根据不同逻辑执行不同的js操作 6、返回FileResult要写入响应中的二进制输出,一般可以用作要简单下载的功能
    1. public ActionResult File() 
    2.      string fileName = "~/Content/test.zip"; // 文件名  
    3.      string downFileName = "文件显示名称.zip"; // 要在下载框显示的文件名  
    4.      return File(fileName, "application/octet-stream", downFileName); 
           public ActionResult File()
            {
                string fileName = "~/Content/test.zip"; // 文件名
                string downFileName = "文件显示名称.zip"; // 要在下载框显示的文件名
                return File(fileName, "application/octet-stream", downFileName);
            }
    直接下载test.zip后保存到本地则为"文件显示名称.zip" 7、 返回Null或者Void数据类型的EmptyResult
    1. public ActionResult Empty() 
    2.      returnnull
           public ActionResult Empty()
            {
                return null;
            }
    返回NULL 8、重定向方法:Redirect / RedirectToAction / RedirectToRoute
        Redirect:直接转到指定的url地址
    1. public ActionResult Redirect() 
    2.        { 
    3.            // 直接返回指定的url地址  
    4.            return Redirect("http://www.baidu.com"); 
    5.        }  
    	public ActionResult Redirect()
            {
                // 直接返回指定的url地址
                return Redirect("http://www.baidu.com");
            } 
        RedirectToAction:直接使用 Action Name 进行跳转,也可以加上ControllerName
    1. public ActionResult RedirectResult() 
    2.     return RedirectToAction("Index", "Home", new { id = "100", name = "liu" }); 
            public ActionResult RedirectResult()
            {
                return RedirectToAction("Index", "Home", new { id = "100", name = "liu" });
            }
    也可以带上参数RedirectToRoute:指定路由进行跳转
    1. public ActionResult RedirectRouteResult() 
    2.     return RedirectToRoute("Default", new { controller = "Home", action = "Index"}); 
            public ActionResult RedirectRouteResult()
            {
                return RedirectToRoute("Default", new { controller = "Home", action = "Index"});
            }
    Default为global.asax.cs中定义的路由名称
  • 相关阅读:
    How to Setup a Private Proxy Server on EC2 in Under 10 Minutes
    How to Create a Cron Job (Scheduled Task) for Your Website or Blog
    NPM, BOWER, GIT, AND BASH PROXY CONFIGURATIONS
    Android: 通过Runtime.getRuntime().exec调用底层Linux下的程序或脚本
    Proguard breaking audio file in assets or raw
    SOCKSify Ruby
    UNIX / Linux: 2 Ways to Add Swap Space Using dd, mkswap and swapon
    窗体之间传值的方法
    扩展方法,
    反射 type 的基本用法,动态加载插件
  • 原文地址:https://www.cnblogs.com/freeliver54/p/3121381.html
Copyright © 2020-2023  润新知