博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET CORE中控制器内return HTML 内容自动编码问题
阅读量:6690 次
发布时间:2019-06-25

本文共 1018 字,大约阅读时间需要 3 分钟。

以前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开头的代码。。

 

转载地址:http://cckoo.baihongyu.com/

你可能感兴趣的文章
由于系统缓冲区空间不足或队列已满,不能执行套接字上的操作
查看>>
gns3 protocol is down的一个问题终于找到解决对策了
查看>>
centos 7 配置 iptable-service
查看>>
Css3之基础-9 Css 显示(显示方式、显示效果、光标)
查看>>
lamp环境搭建及应用(rpm)
查看>>
微软新推出大礼包了
查看>>
Cisco路由器密码重置
查看>>
RHCS+ISCSI+web构建高可用性群集
查看>>
Hive 数据库仓库的基本操作
查看>>
Spring AOP之简单实践
查看>>
Linux Bash脚本练习5
查看>>
我的友情链接
查看>>
apache禁止解析php文件
查看>>
linux用户和组的权限
查看>>
VSphere 架构和部署
查看>>
Jquery中用offset().top和offsetTop的比较
查看>>
关于Windows频繁打开关闭端口时出现的问题(转至老赵)
查看>>
eclipse egit(远程仓库)
查看>>
网络安全抗***力说明
查看>>
给Angularjs配上Requirejs
查看>>