SPがasp:TextBoxのプロパティTextと存在しないプロパティValueを参照していることがわかりました。IISのリセット後に変更されます。したがって、SPが値を参照する場合、フィルターは機能しません。
答えは、asp:TextBoxに基づいて独自のコントロールascxCustomTextBoxを作成することです。
通常のコードビハインドファイルをSPにコピーできないことを忘れないでください。
まず、完全なコードビハインドファイルを記述し、それをDLL(私はSearchTextBox.dllと呼びます)にコンパイルします。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace WebApplication3
{
public partial class NewTextBox : System.Web.UI.UserControl
{
protected global::System.Web.UI.WebControls.TextBox TextBox_PhoneSearch;
protected void Page_Load(object sender, EventArgs e)
{
}
public string Text
{
get { return TextBox_PhoneSearch.Text; }
set { TextBox_PhoneSearch.Text = value; }
}
public string Value
{
get
{
return TextBox_PhoneSearch.Text;
}
}
}
}
次に、このDLLにキーを割り当て、サーバーGACに挿入します(または特別な権限を付与します)。
その後、ascx制御ファイルの公開鍵とアセンブルをリンクできます(コードビハインドファイルなし)。NewTextBox.ascxファイル:
<%@ Assembly Name ="SearchTextBox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b341d7aadf237863"%>
<%@ Control Language="C#" AutoEventWireup="true" Inherits="WebApplication3.NewTextBox" %>
<asp:TextBox ID="TextBox_PhoneSearch" runat="server" AutoPostBack="true" class="ms-sbplain" style="width: 280px;"></asp:TextBox>
NewTextBox.ascxを...\12 \ TEMPLATE \CONTROLTEMPLATES\にコピーします
コントロールNewTextBox.ascxを使用する準備が整いました。SPページに登録するだけです。
<%@ Register Src="~/_controltemplates/NewTextBox.ascx" TagName="NewTextBox" TagPrefix="MyCompany" %>
そしてそれをこのページに挿入します:
<MyCompany:NewTextBox id="TextBoxSearch" runat="server"/>