2012-07-28 18 views
3

我一直在研究這一段時間,但我似乎無法找到答案...... Google今天真的沒有幫助我!驗證器控件必須始終顯示=「動態」

我正在一個C#網站上使用大量的表單和大量的驗證。必須用手輸入的大型表格(儘管這裏沒有問題)。

我的問題是,我總是希望我的ValidationControls將顯示屬性設置爲動態。

我找到了解決辦法,但我不相信這是最好的解決方案。

目前,我有一個BaseValidatorControlAdapter,設置了驗證顯示類型爲「動態」是這樣的:

public class BaseValidatorControlAdapter : ControlAdapter 
{ 
    protected override void Render(System.Web.UI.HtmlTextWriter writer) 
    { 
     System.Web.UI.WebControls.BaseValidator _control = (System.Web.UI.WebControls.BaseValidator)this.Control; 
     _control.Display = System.Web.UI.WebControls.ValidatorDisplay.Dynamic; 
     base.Render(writer); 
    } 
} 

然後,這是通過添加App_Browser它看起來像這樣

<browsers> 
    <browser refID="Default"> 
     <controlAdapters> 
      <adapter controlType="System.Web.UI.WebControls.BaseValidator" 
        adapterType="BaseValidatorControlAdapter" /> 
     </controlAdapters> 
    </browser> 
</browsers> 

我的問題triggerd因爲你是。是否可以爲任何驗證器控件設置顯示的默認值。因爲我目前的解決方案僅僅覆蓋了現在的情況,而且沒有辦法改變這種情況。因此,當情況發生,我確實需要其他東西,然後在顯示選項中動態顯示時,沒有解決方案。

我幾乎確信有更好的解決方案。

任何意見是讚賞!

編輯2012年8月2日:

我終於與解決方案覆蓋默認asp.net控件和下面的構造添加到他們

public controlname() 
    : base() 
{ 
    this.Display = "Dynamic"; 
} 

我添加了所有這些控件落腳命名空間,現在我可以做

<validator:RequiredField ID="RqrdFld_x" runat="server" Display="Static" /> 

本質上覆蓋了我的控制定義中的默認值d覆蓋構造函數中Dynamic的默認控件Display值。

回答

2

link應該有助於解決您的問題。

您可以使用皮膚文件爲.NET站點上的Web控件設置默認值。

我有一個名爲DefaultTheme的文件夾添加到我的App_Theme文件的文件夾,並添加一個文件叫Skin.skin,具有以下內容:

<asp:RequiredFieldValidator runat="server" Display="Dynamic" /> 
<asp:CompareValidator runat="server" Display="Dynamic" /> 
<asp:RegularExpressionValidator runat="server" Display="Dynamic" /> 

..allowing我有一個默認的設置了一些不同的驗證器(或其他控件)跨越我的網站。

+0

聽起來正是我想要的,儘管我已經有了自己的解決方案,我會看看,因爲這看起來好一點。如果是我想要的解決方案,您絕對可以將我的投票作爲答案!只需要回到我自己的電腦:D – bkwint 2012-09-14 12:29:02

2

您可以在Page_Init事件做那麼用什麼這樣的代碼:

foreach(Control control in Page.Controls){ 
    if(control is System.Web.UI.WebControls.BaseValidator) 
    { 
    control.Display = "Static"; 
    } 
} 

它會發現所有的控制和設置相應的Display屬性。

+0

這不是我想要的。我想讓我的所有字段驗證器的顯示類型自動變爲動態。我不想爲每個驗證器控件設置它。您的解決方案是將其設置爲特定的驗證器控件。任何驗證控件都應該自動設置爲動態...這就是我的代碼所做的。但我想知道是否有更好的解決方案,然後我的。 – bkwint 2012-07-28 21:41:11

+0

請檢查我的答案。我更新了它。 – Tarik 2012-07-28 21:45:17

+0

這是一個解決方案,但不是真正的項目範圍雖然....除了我真的質疑這是否有效。因爲你遍歷每個控件。我的解決方案只適用於validatorcontrols。雖然我真的不知道使用控制器是否對我的服務器很重。 – bkwint 2012-07-28 21:48:06