zoukankan      html  css  js  c++  java
  • 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开头的代码。。

  • 相关阅读:
    飞鸽传书中文源码
    nohup命令参考
    Linux平台编程新手入门 C语言中的移位操作
    小技巧:让linux程序在后台运行
    2440之中断管理
    linux终端中输出彩色字体(C/SHELL)
    C语言标准中的逻辑位移和算术位移
    SQL2005利用ROW_NUMER实现分页的两种常用方式
    不用现有方法,把string转换成int型[C#]
    C# 如何生成一个时间戳
  • 原文地址:https://www.cnblogs.com/niunan/p/8323924.html
Copyright © 2011-2022 走看看