Javascript在<,比;在GridView编辑框中

本文关键字:编辑 GridView Javascript | 更新日期: 2023-09-27 18:03:52

我有一个Asp。UpdatePanel中的GridView。除了其中一列包含HTML特殊字符(如<>)外,一切正常。GridView绑定到一个List<Entity>,而Entity类有一个属性Regex,它是一个System.Text.RegularExpressions.Regex

一开始是这样的:

<asp:TemplateField HeaderText="RegEx">
    <ItemTemplate>
        <asp:Label ID="RegExLabel" runat="server" Text='<%#Eval("Regex") %>' 
                   ToolTip='<%#Eval("Regex") %>' Width="102px" CssClass="Wrap" />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="RegExTextBox" runat="server" Text='<%#Eval("Regex") %>' 
                     Width="98px" />
    </EditItemTemplate>
</asp:TemplateField>

当不编辑时,(?<capture>'d+)的值显示?'d+,当编辑这一行时,我得到了一个脚本错误,编辑,更新和取消按钮不再工作。

然后我试着回答这个问题,得到了这个:

<asp:TemplateField HeaderText="RegEx">
     <ItemTemplate>
          <asp:Label ID="RegExLabel" runat="server" 
                     Text='<%#System.Web.HttpUtility.HtmlEncode(Eval("Regex").ToString()) %>' 
                     ToolTip='<%#System.Web.HttpUtility.HtmlEncode(Eval("Regex").ToString()) %>'
                     Width="102px" CssClass="Wrap" />
     </ItemTemplate>
     <EditItemTemplate>
          <asp:TextBox ID="RegExTextBox" runat="server" 
                       Text='<%#System.Web.HttpUtility.HtmlEncode(Eval("Regex").ToString()) %>' 
                       Width="98px" />
     </EditItemTemplate>
</asp:TemplateField>

这稍微好一点,因为工具提示和非编辑版本正确显示,但是当我开始编辑时,我看到:(?&lt;capture&gt;'d+)和原始的HTML实体显示。有人知道一种方法来编码的值(停止脚本错误),同时仍然显示他们正确没有HTML实体在他们的原始状态编辑时?

Javascript在<,比;在GridView编辑框中

<asp:TemplateField HeaderText="RegEx">
    <ItemTemplate>
        <asp:Literal Mode="Encode" ID="RegExLabel" runat="server" Text='<%#Eval("Regex") %>' 
                   ToolTip='<%#Eval("Regex") %>' Width="102px" CssClass="Wrap" />
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="RegExTextBox" runat="server" Text='<%#Eval("Regex") %>' 
                     Width="98px" />
    </EditItemTemplate>
</asp:TemplateField>

并在page指令中添加ValidateRequest="false"