zoukankan      html  css  js  c++  java
  • ASP.NET MVC中多种ActionResult用法总结

    最近一段时间做了个ASP.NET MVC4.0的项目,项目马上就要结束了,今天忙里偷闲简单总结一下心得:

    1. 如果Action需要有返回值的话,必须是ActionResult的话,可以返回一个EmptyResult,Demo实例如下:

    /// <summary>
    /// 
    /// </summary>
    /// <returns>EmptyResult</returns>
    public ActionResult EmptyActionResult()
    {
        Response.Write("This is a string content");
        return new EmptyResult();
    }
    View Code

    2. 如果需要转向指定的页面的话,转向一个指定的url,返回类型为RedirectResult,Demo实例如下:

    /// <summary>
    /// Controller.Redirect(),转向一个指定的url
    /// </summary>
    /// <returns>RedirectResult</returns>
    public ActionResult RedirectResult()
    {
        return base.Redirect("~/Controllers/DestinationController");
    }
    View Code

    3.如果需要转向一个指定的Action,返回类型为RedirectToRouteResult,Demo实例如下:

    /// <summary>
    /// Controller.Redirect(),转向一个指定的Action
    /// </summary>
    /// <returns>RedirectToRouteResult</returns>
    public ActionResult RedirectToRouteResult()
    {
        return base.RedirectToAction("DestinationOController");
    }
    View Code

    4.如果需要将指定的对象以JSON串的形式返回,返回类型为JsonResult,Demo实例如下:

    /// <summary>
    /// Controller.Json(),将对象以Json的形式返回
    /// </summary>
    /// <returns>JsonResult</returns>
    public ActionResult GetJsonResult()
    {
    
        var jsonObj=new {Name:"Test Name";Age:25};
        return base.Json(jsonObj);
    }
    View Code

    5. 如果需要返回一段Javascript代码,返回类型为JavascriptResult,Demo实例如下:

    /// <summary>
    /// Controller.JavaScript(),将对象以Javascript脚本的形式返回
    /// </summary>
    /// <returns>JavaScript</returns>
    public ActionResult GetJavascriptResult()
    {
        return base.JavaScript("alert('This is JavaScript result')");
    }
    View Code

    6. 如果需要输出一段指定的内容,返回类型为ContentResult,Demo实例如下:

    /// <summary>
    /// Controller.Content(),将对象以ContentResult的形式返回
    /// </summary>
    /// <returns>ContentResult</returns>
    public ActionResult ContentResult()
    {
        string contentString = string.Format("<span style='color: red'>{0}</span>", "This is content result");
        return base.Content(contentString);
    }
    View Code

    7. 如果需要将一个文件以字节输入的格式输入,返回类型为FileContentResult,Demo实例如下:

    /// <summary>
    /// Controller.Content(),将对象以byte[]的形式返回
    /// </summary>
    /// <returns>FileContentResult</returns>
    public ActionResult FileContentResult()
    {
        FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
        int length = (int)fs.Length;
        byte[] buffer = new byte[length];
        fs.Read(buffer, 0, length);
        fs.Close();
        return base.File(buffer, "image/gif");
    
    }
    View Code

    8. 如果需要将一个文件以文件流的格式输出,返回类型为FileStreamResult,Demo实例如下:

    /// <summary>
    /// Controller.Content(),将对象以FileStream的形式返回
    /// </summary>
    /// <returns>FileStreamResult</returns>
    public ActionResult FileStreamResult()
    {
        FileStream fs = new FileStream(Request.PhysicalApplicationPath + "Content/loading.gif", FileMode.Open);
        return base.File(fs, @"image/gif");
    }
    View Code

    9. 如果需要返回未经授权浏览状态的结果,返回类型为HttpUnauthorizedResult,Demo实例如下:

    /// <summary>
    /// HttpUnauthorizedResult - 响应给客户端错误代码 401(未经授权浏览状态),
    /// 如果程序启用了 Forms 验证,并且客户端没有任何身份票据,则会跳转到指定的登录页
    /// </summary>
    /// <returns>HttpUnauthorizedResult</returns>
    public ActionResult HttpUnauthorizedResult()
    {
        return new HttpUnauthorizedResult();
    }
    View Code

    10. 如果需要返回html页面的部分[.ascx],返回对象的类型为PartialViewResult,Demo实例如下:

    /// <summary>
    /// Controller.PartialView(),查找PartialView,即 .ascx 文件
    /// </summary>
    /// <returns>PartialView</returns>
    public ActionResult PartialViewResult()
    {
        return base.PartialView();
    }
    View Code

    11. 如果需要返回完整的Html,即完整的View,返回的类型了ViewResult,Demo实例如下:

    /// <summary>
    /// Controller.View(),查找View,即.aspx 文件
    /// </summary>
    /// <returns>ViewResult</returns>
    public ActionResult ViewResult()
    {
        // 如果没有指定 View 名称,则寻找与 Action 名称相同的 View
        return base.View();
    }
    View Code

    12. 使用Get方式调用Action,返回类型为参数为空的ViewResult,Demo程序实例如下:

    /// <summary>
    /// 用于演示 Get 方式调用 Action
    /// id 是根据路由过来的;param1和param2是根据参数过来的
    /// </summary>
    /// <returns></returns>
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult GetDemo(int id, string param1, string param2)
    {
        ViewData["ID"] = id;
        ViewData["Param1"] = param1;
        ViewData["Param2"] = param2;
        
        return View();
    }
    View Code

    14. 处理上传文件的Action,Demo实例如下:

    /// <summary>
    /// 处理上传文件的 Action
    /// </summary>
    /// <param name="file1">与传过来的 file 类型的 input 的 name 相对应</param>
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult UploadFile(HttpPostedFileBase file1)
    {
        // Request.Files - 获取需要上传的文件。当然,其也会自动映射到同名参数
        // HttpPostedFileBase hpfb = Request.Files[0] as HttpPostedFileBase;
        
        string targetPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory + "Upload", Path.GetFileName(file1.FileName));
        file1.SaveAs(targetPath);
    
        return View("UploadDemo");
    }
    View Code

    待完善。。。

  • 相关阅读:
    elastic-job 新手指南
    最基本的区块链hello world(python3实现)
    python:函数的高级特性
    python高级特性:切片/迭代/列表生成式/生成器
    python:函数中五花八门的参数形式(茴香豆的『回』字有四种写法)
    python:爬虫入门
    python: 序列化/反序列化及对象的深拷贝/浅拷贝
    python中的zip、lambda、map操作
    python面向对象笔记
    RxJava2学习笔记(3)
  • 原文地址:https://www.cnblogs.com/chengbing2011/p/4223329.html
Copyright © 2011-2022 走看看