ASP.NET CORE中控制器内return HTML 内容自动编码问题
2018-01-21 13:06
721 查看
以前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开头的代码。。
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开头的代码。。
相关文章推荐
- ASP.NET CORE中控制器内return HTML 内容自动编码问题
- Asp.net MVC 3 Razor 视图引擎 中使用@输出的内容都会被自动进行HTML编码 问题的解决办法
- 在asp.net mvc中使用百度UEditor初始化内容遇到自数据库中读取的html字符串在UEditor中始终是html编码的问题
- ASP.NET Core解决MVC视图中的中文被html编码的问题
- ASP.NET 4.0 ListView等容器控件中获取ClientID值与HTML中自动生成ID字符串不一样问题。
- Asp.Net Core控制器如何接收原始请求正文内容详解
- ASP.NET MVC 获得 view 中的HTML并将其中的内容自动转换成繁体中文。
- 解决asp.net中HTML中talbe的行高被内容撑的变高的问题
- Asp.net Core WebApi 返回JSON自动驼峰格式化问题
- ASP.NET MVC学习时,自动导入数据库控制器和视图时遇到的问题
- Asp.net Core 创建控制器时出错问题记录(运行所选代码生成器时出错)
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
- ASP.NET MVC学习之View动态内容和htmlhelper
- asp.net 导出excel 中的乱码问题及 到处内容丢失开头的0 的解决方法
- 【.NetCore学习】ASP.NET Core EF Core2.0 DB First现有数据库自动生成实体Context
- asp.net页面编码问题
- Asp.net解析HTML并利用XPATH分析提取内容
- DataProtection设置问题引起不同ASP.NET Core站点无法共享用户验证Cookie
- Asp.net中解决母版页CSS样式无法在内容页完整显示——问题