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

    待完善。。。

  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/chengbing2011/p/4223329.html
Copyright © 2011-2022 走看看