ASP.NET COREでコントローラ内return HTMLコンテンツ自動符号化問題-01-21
1445 ワード
以前はASP.NET MVCではコントローラで直接
return Content( "テスト ");
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で始まるコードに変換します.
このコードは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で始まるコードに変換します.