2

これらのイベントのいくつかは、カスタムコーディングされたグリッドビューにあります。ただし、ここでの本当の問題は、前のレコード、つまり変更されていたレコード、またはold.valueを保存し、それを別の列に保存することです。したがって、ユーザーが引用符なしで「<newValue>」と入力すると、aspxバリデーターは入力を危険なものとして拒否します。

検証を無効にして、データベースに書き込まれるときに値をhtmlエンコードできますが、グリッドビューの[前の値]列に値を表示すると、次のように表示されます...&ltニュートラル&gtセミコロンがありませんこのサイトはデコードするためです。

ASPXでインラインでエンコードおよびデコードするにはどうすればよいですか?

グリッドビューに入力されるこのテンプレートフィールドをエンコードするにはどうすればよいですか?

<EditItemTemplate>
    <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("lang_String") %>'></asp:TextBox>
</EditItemTemplate>

サイト全体の検証をオフにせずに、特定のhtml文字をこのフィールドにのみ入力できるようにしたいと思います。

列全体に適用するには、これが必要です。

ありがとうございました、

4

1 に答える 1

1

この問題を解決するための実行可能な解決策を見つけました。コード ビハインドでは、次のように入力して関数を呼び出し、html エンコーディングを処理します。

<Columns> 
<asp:TemplateField> 
  <ItemTemplate> 
      <asp:Label ..... Text='<%# DecodeIT(Eval("FirstName").ToString())%>' /> // for "decoding" 
 </ItemTemplate> 
 <EditTemplate> 
      <asp:TextBox id="TextBox1" runat="server" /> // for "encoding" 

ここに関数があります...

Private Function DecodeIT(firstName As String) As String
Return HttpUtility.HtmlDecode(firstName)
End Function

他のほとんどのソリューションでは、Page ディレクティブまたは web.config で Validation を無効にすることが提案されていましたが、これはこの問題を解決するためのベスト プラクティスではありません。

このような関数を使用するのが最善の方法です。

于 2012-04-16T13:08:48.167 に答える