我發現SP看起來屬性文本的asp:TextBox和非現有的屬性值。它將在IIS重置後更改。所以,當SP看起來值過濾器不起作用。
答案是兩個寫你自己的控件ascx基於asp:TextBox的CustomTextBox。
不要忘記,您不能將常用的代碼隱藏文件複製到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"/>