ASP.NET 8 MVC返回值类型

不同的返回值类型告诉浏览器以什么样的方式去解析

        /// 返回视图
        /// 返回视图的时候,必然会调用View视图文件(cshtml文件);
        /// cshtml可以被服务器调用到;
        /// cshtml可以写html,也可以写后台的C#代码,cshtml是一个类文件~
        /// 既可以写后台C#代码也可以写Html===Razor混编;
        /// 
        ///Mvc在返回视图的时候,最后要生成的是Html标签,控制器中调用view(),寻找对应的视图,根据寻找到的视图来匹配,会用上Layout母版页,在Layout母版页中有一个RenderBody方法,这个方法就是我们返回视图中的内容的占位符;把视图中的内容塞到占位符所在的位置; 
        
        /// 在Mvc开发中,返回的类型可能会有不同的类型,但是提供了一个统一的IActionResult接口来作为返回值。
 
        /// 浏览器访问服务器,服务器响应结果,返回的类型可能有多种类型,但是对于浏览器来说,需要明确按照不同的类型的方式来解析展示;  如果是Html 浏览器就要按照html的方式类解读,如果是Xml,浏览器就要按照Xml格式来解析~~
        /// 
        /// IActionResult就是为了实现不同的类型返回;不同的类型返回除了需要返回结果,通知也需要告诉浏览器如何解析这个结果。
        public ViewResult Index([FromServices] IOptionsMonitor<ConnectionStringOptions> optionsMonitor, [FromServices] IOptions<ConnectionStringOptions> options)
        {
            //
            //text/html; charset=utf-8:浏览器根据他来判断要使用Html的方式来解读返回的结果

            //实际返回的是一个视图---Html
            //但是告诉浏览器返,用Json的解析方式来解析我这个数据
            //HttpContext.Response.ContentType = "application/json; charset=utf-8";
            return View(); //找和当前控制器方法匹配的视图文件渲染
                           //return View("~/Views/A03ReturnValue/IndexView.cshtml");
                           //return View("~/Views/A03ReturnValue/IndexView.cshtml", optionsMonitor.CurrentValue);
        }

        /// <summary>
        /// Razor视图
        /// </summary>
        /// <param name="optionsMonitor"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public IActionResult RazorIndex([FromServices] IOptionsMonitor<ConnectionStringOptions> optionsMonitor, [FromServices] IOptions<ConnectionStringOptions> options)
        {
            return View();
        }


        /// <summary>
        /// 返回局部视图
        /// </summary>
        /// <returns></returns>
        public PartialViewResult ReturnPartialViewResult()
        {
            return PartialView();
        }

        /// <summary>
        /// 返回组件
        /// http://localhost:5229/A03ReturnValue/IndexComponent
        /// </summary>
        /// <returns></returns>
        public ViewComponentResult IndexComponent()
        {
            return ViewComponent(typeof(ConfigurationViewComponent));
        }

        /// <summary>
        /// 返回Json对象
        /// Content-Type: application/json; charset=utf-8
        /// </summary>
        /// <param name="optionsMonitor"></param>
        /// <param name="options"></param>
        /// <returns></returns>
        public JsonResult Json([FromServices] IOptionsMonitor<ConnectionStringOptions> optionsMonitor, [FromServices] IOptions<ConnectionStringOptions> options)
        {
            return Json(optionsMonitor.CurrentValue);
        }
         
        /// <summary>
        /// 返回文件
        /// </summary>
        /// <returns></returns>
        public FileContentResult FileContent()
        {
            string fileName = "File/Richard.jpg";
            byte[] fileBytes = GetFileData(fileName);
            string mimeType = "application/octet-stream";
            return new FileContentResult(fileBytes, mimeType)
            {
                FileDownloadName = fileName
            };
        }

        /// <summary>
        /// 返回文件流
        /// </summary>
        /// <returns></returns>
        public FileStreamResult FileStream()
        {
            string fileName = "File/Richard.jpg";
            string mimeType = "application/octet-stream";
            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
            {
                return new FileStreamResult(fs, mimeType);
            }
        }

        /// <summary>
        /// 读取文件流
        /// </summary>
        /// <param name="fileUrl"></param>
        /// <returns></returns>
        private byte[] GetFileData(string fileUrl)
        {
            FileStream fs = new FileStream(fileUrl, FileMode.Open, FileAccess.Read);
            try
            {
                byte[] buffur = new byte[fs.Length];
                fs.Read(buffur, 0, (int)fs.Length);

                return buffur;
            }
            catch (Exception ex)
            {
                //MessageBoxHelper.ShowPrompt(ex.Message);
                return null;
            }
            finally
            {
                if (fs != null)
                {
                    //关闭资源
                    fs.Close();
                }
            }
        }

        /// <summary>
        /// 返回字符串
        /// </summary>
        /// <returns></returns>
        public string ReturnString()
        {
            return "返回字符串--ReturnString";
        }

        /// <summary>
        /// 返回字符串
        /// </summary>
        /// <returns></returns>
        public ContentResult ReturnStringContent()
        {
            return new ContentResult()
            {
                Content = "返回字符串-ReturnStringContent"
            };
        }

        /// <summary>
        /// 返回空值
        /// </summary>
        /// <returns></returns>
        public EmptyResult ReturnNullEmptyResult()
        {
            return new EmptyResult();
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄健华Yeah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值