当前位置:  开发笔记 > 后端 > 正文

如何在TemplateFields,Data Binding和GridView中使用HtmlEncode

如何解决《如何在TemplateFields,DataBinding和GridView中使用HtmlEncode》经验,为你挑选了4个好方法。

我有一个绑定到ObjectDataSource的GridView.我也支持编辑,这很好用.但是,我想安全地显示HtmlEncode文本,因为我们允许在某些字段中使用特殊字符.这与标准的BoundFields有关,因为我只是将HtmlEncode设置为true.

但是为了设置验证控件,需要使用TemplateFields.如何轻松添加HtmlEncoding以这种方式输出?这是一个ASP.NET 2.0项目,所以我正在使用更新的数据绑定快捷方式(例如EvalBind).

我想做的是如下:


    
        
        
    
    
        
    

但是,当我这样尝试时,我收到以下错误:

CS0103:当前上下文中不存在名称"Bind"

pattermeiste.. 31

现在可以使用ASP.NET 4中引入的新HTML编码数据绑定语法.

你可以简单地使用:

<%#: Eval("MyField") %>

要么

<%#: Bind("MyField") %>

注意磅/井号后的冒号就这么简单.



1> pattermeiste..:

现在可以使用ASP.NET 4中引入的新HTML编码数据绑定语法.

你可以简单地使用:

<%#: Eval("MyField") %>

要么

<%#: Bind("MyField") %>

注意磅/井号后的冒号就这么简单.


Waww ..一百万美元答案..谢谢

2> Darin Dimitr..:

引自http://weblogs.asp.net/leftslipper/archive/2007/06/29/how-asp-net-databinding-deals-with-eval-and-bind-statements.aspx

ASP.NET中没有Bind方法.当ASP.NET分析您的文件并看到您正在使用时

它会为它生成一些特殊代码.当你使用它时,它不是一个真正的函数调用.如果ASP.NET解析代码并检测到Bind()语句,它会将语句拆分为两部分.第一部分是单向数据绑定部分,最终只是一个常规的Eval()调用.第二部分是反向部分,它通常是"string name = TextBox1.Text"行的一些代码,它从绑定的位置取回值.但是,因为ASP.NET必须解析Bind()语句,所以双向数据绑定不支持除Bind()之外的任何内容.例如,以下语法无效,因为它尝试调用任意代码并同时使用Bind():

双向数据绑定中支持的唯一格式是Bind("field")和Bind("field","format string {0}").

您可以在EditItemTemplate中使用Eval而不是Bind.你还需要强制转换为字符串:




3> Slauma..:

正如Darin Dimitrov已经解释过的那样,您不能将其Bind用作函数的参数.所以Text='<%# System.Web.HttpUtility.HtmlEncode(Bind("Description")) %>'不可能.另一方面,通常没有必要在这里使用HtmlEncode,因为您将使用Bind允许更改数据的控件,例如与TextBox一起使用(如EditItemTemplate的示例中所示).但是TextBox会自动编码,因此您可以安全地调用Bind而无需HtmlEncode:


    
    

如果TextBox不会自动编码,那Bind将是一个巨大的安全漏洞(除非您绝对确定您的数据可以安全地在没有编码的情况下呈现为HTML).

但是例如标签的自动编码不是这种情况.虽然您也可以Bind在标签的Text属性中使用,但标签的输出不会自动编码 - 使用Bind标签的原因不是一个好习惯,因为您无法使用标签文本进行编码Bind.而是使用Eval并将其包装到HtmlEncode中,就像在ItemTemplate中一样:Text='<%# System.Web.HttpUtility.HtmlEncode((string)Eval("Description")) %>'



4> 小智..:
     
           
    
          
       
           
      
   
 

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有