ASP.NET CORE中控制器内return HTML 内容自动编码问题

以前ASP.NET MVC中在控制器中直接

   return Content( "<h1>测试测试</h1>");

在前台VIEW上就显示加粗的文字了,但是在ASP.NET CORE中这样的话是直接原样返回的,他自动给你编码了,正确的做法应该是如下代码:

   return Content( "<h1>测试测试</h1>","text/html", Encoding.GetEncoding("GB2312"));

 

这个编码好像在CORE中默认是没有的,需要在Startup.cs中的ConfigureServices方法中注册一下,代码如下:

  //添加gb2312的支持
            Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);

 

 然后上面只是在控制器里,如果我是在BaseController.cs中重写那个过滤器方法的话得用如下代码:

        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (HttpContext.Session.GetInt32("userid") == null)
            {
                var con = new ContentResult();

                //byte[] gb = Encoding.Unicode.GetBytes("登录超时,请重新登录!");
                //string r = "";
                //for (int i = 0; i < gb.Length; i += 2)
                //{
                //    r += "\\u" + gb[i + 1].ToString("x").PadLeft(2, '0') + gb[i].ToString("x").PadLeft(2, '0');
                //}

                string r = "登录超时,请重新登录!";

                con.Content = $"<script>alert('{r}');parent.location.href='/login'</script>";
                con.ContentType = "text/html;charset=utf-8";

                context.Result = con;
            }
            base.OnActionExecuting(context);
        }

 

如果是用注释里的代码,就是把所有的中文都转成那个以\\u开头的代码。。

 

posted @   牛腩  阅读(232)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示