ASP.NET COREでコントローラ内return HTMLコンテンツ自動符号化問題-01-21

1445 ワード

以前はASP.NET MVCではコントローラで直接
return Content( "

テスト

");
フロントVIEWに太字の文字が表示されていましたが、ASP.NET COREではこのような言葉はそのまま戻ってきて、彼は自動的にあなたに符号化して、正しい方法は以下のコードであるべきです.
return Content( "

テスト

","text/html", Encoding.GetEncoding("GB2312"));
このコードはCOREではデフォルトではないようですが、Startupが必要です.csのConfigureServicesメソッドに登録してください.コードは次のとおりです.
//gb 2312のサポートEncodingを追加する.RegisterProvider(CodePagesEncodingProvider.Instance);
私がコントローラにいるなら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 = $"alert('{r}');parent.location.href='/login'";
            con.ContentType = "text/html;charset=utf-8";

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

注釈のコードであれば、すべての中国語をuで始まるコードに変換します.