У меня есть Asp.Net GridView внутри UpdatePanel.Все работает нормально, за исключением случаев, когда один из столбцов содержит специальные символы 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>
Это немного лучше, так как подсказка и не редактируемая версия отображаются правильно, но когда я начинаю редактирование, я вижу: (?<capture>\d+)
с HTML-сущностями, отображаемыми в сыром виде.Кто-нибудь знает способ кодирования значений (чтобы остановить ошибку сценария) при правильном отображении их без сущностей HTML в исходном состоянии при редактировании?