asp.net-mvc – ASP.NET MVC Textarea HTML帮助器在使用AntiXssL
我注意到ASP.NET MVC的TextAreaFor
HTML帮助程序中最烦人(可能)的错误.出于某种原因,HTML帮助程序会在textarea中的任何内容之前添加NewLine.显然,这是为了解决个人内容的可能问题,从有意的新线开始,浏览器按照规范忽略它.
然而,通过添加它,我得到了更多烦人的错误,现在我的所有textareas在表单加载之前自动有一个额外的行(即在我的字段中的任何内容之前显示:).在吐出之前,似乎某些东西正在编码“换行符”. 任何人有一个解决方法吗?我希望打算输出它的预期行为 <textarea> Stuff</textarea> 不是 <textarea> Stuff</textarea> 我越来越… 编辑 protected override void HtmlEncode(string value,TextWriter output) { output.Write(Microsoft.Security.Application.Encoder.HtmlEncode(value)); } 所以我的想法是,因为从TextAreaHelper调用的TagBuilder类,HTML编码标签的内容,它是默认HTML编码器的行为,但AntiXssLibrary更彻底,因此你看到这种行为? 解决方法
在做了一些代码挖掘后,我发现我的想法是正确的. MVC3 TextArea HTML Helper使用TagBuilder类,并执行以下操作:
tagBuilder.SetInnerText(Environment.NewLine + value); 当SetInnerText对传递给它的参数的内容调用HttpUtility.Encode时,这会导致默认编码器不仅在实际VALUE上调用,而且在此Environment.NewLine上调用,这意味着如果您没有使用默认编码器HtmlEncoder(就像AntiXssLibrary一样),可能会有一些意想不到的行为,就像这样. 修复将是他们改为调用: tagBuilder.InnerHtml = Environment.NewLine + HttpUtility.Encode(value); 我已经提交了一份错误报告. 与此同时,我正在实现一个Javascript onLoad修复,以从所有textareas中删除有问题的编码: $("textarea").each(function () { $(this).val($(this).val().trim()); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net cookie,身份验证和会话超时
- asp.net-mvc – 无法获得有效的Unity Session Lifetime Man
- asp.net-mvc – TempData在第二个请求后不会被破坏
- asp.net-mvc – 返回空ActionResult
- asp.net – 如何将下拉列表添加为gridview项
- asp.net – 我应该使用哪个PreApplicationStartMethod?
- 如何在ASP.NET和C#中加载下拉列表?
- ASP.NET发布尝试复制不存在的文件
- asp.net-mvc – 上传文件:MemoryStream与文件系统
- asp.net-mvc – MVC4 Web API或MVC3 JsonResult
- .net – 使用外部托管站点设置登台环境?
- 在ASP.NET MVC表单上允许多个按钮的最佳方法是什
- asp.net-mvc – ASP.Net MVC TempData – 如何保
- asp.net-mvc-3 – ASP.NET MVC 3:当BeginForm在
- asp.net-mvc-3 – 使用razor设置knockout viewmo
- asp.net – 基于Web的可视化查询构建器
- asp-classic – 从ASP.Classic中的Web.Config读取
- asp.net – 第一次访问网站需要非常长的时间(总共
- asp.net-mvc – ASP MVC – 多对多的关系
- asp.net – Mocking HttpContext不起作用