1

こんにちは、サイズ変更可能なテキスト ボックスのユーザー コントロールを作成しました。

<asp:Panel ID="PanelText" runat="server" CssClass="frameText">
<asp:TextBox runat="server" ID="TextBoxResizable" CssClass="noborder" Width="100%"
    Height="100%" TextMode="MultiLine">
</asp:TextBox>
</asp:Panel>
<cc1:ResizableControlExtender ID="ResizableTextBoxExtender" runat="server" TargetControlID="PanelText"
ResizableCssClass="resizingText" HandleCssClass="handleText" OnClientResizing="OnClientResizeText" />

そして、このコントロールの Validator プロパティを次のように作成しました。

[ValidationProperty("Text")]
 public partial class ResizableTextBoxControl : System.Web.UI.UserControl
{ public string Validator
{
    get { return this.TextBoxResizable.Text; }
} 
protected void Page_Load(object sender, EventArgs e)
 {

 }
}

aspx ページでは、このコントロールを次のように使用しています。

<uc1:ResizableTextBoxControl ID="tbDescription" MinimumHeight="50" MinimumWidth="100"
 MaximumHeight="300" MaximumWidth="400" runat="server" onKeyPress="javascript:Count(this,1500);" onKeyUp="javascript:Count(this,1500);" ValidationGroup="vgSubmit" ></uc1:ResizableTextBoxControl>

 <asp:RequiredFieldValidator ID="rfvDescription" runat="server" controlToValidate="tbDescription" ValidationGroup="vgSubmit" ErrorMessage="Description" Text="*" ForeColor="Red" SetFocusOnError="True"></asp:RequiredFieldValidator>

送信をクリックすると、「tbDescription」は必須ではないようです。コードのどこが間違っている可能性がありますか?

編集

わかりました...私は問題が何であるかを理解しました.1つのコントロールが非表示になり、そのコントロールに必要なフィールドバリデータが無効になっていませんでした.jqueryを使用して実行したところ、アステリック以外はすべて正常になりました. .

4

3 に答える 3

1

特に1つのテキストボックスを検証しようとする場合は、バリデーターをコントロールに配置してみてください

   <asp:Panel ID="PanelText" runat="server" CssClass="frameText">
<asp:TextBox runat="server" ID="TextBoxResizable" CssClass="noborder" Width="100%"
    Height="100%" TextMode="MultiLine">

    </asp:TextBox>
     <asp:RequiredFieldValidator 
ID="rfvDescription" runat="server" controlToValidate="TextBoxResizable"
 ValidationGroup="vgSubmit" 
ErrorMessage="Description" Text="*" 
ForeColor="Red" SetFocusOnError="True">

</asp:RequiredFieldValidator
    </asp:Panel>
    <cc1:ResizableControlExtender ID="ResizableTextBoxExtender"
 runat="server" TargetControlID="PanelText"

    ResizableCssClass="resizingText" HandleCssClass="handleText OnClientResizing="OnClientResizeText" />

ユーザー コントローラーでは、ページがレンダリングされた後に認識されない可能性があります。

于 2012-05-15T03:49:45.153 に答える
0

ご面倒をおかけしてすみません、

ページに非表示のコントロールが 1 つあり、そのコントロールに必要なフィールド バリデーターが無効になっていませんでした。次のようなjQueryを使用して無効にしました

$(document).ready(function () {
    if (!$("#<%=TextBoxResizable.ClientID %>").is(":visible")) {
        ValidatorEnable(<%=rfvTextBoxResizable.ClientID %>, false);
    }
})

パネルの外側に必要なフィールドバリデーターを配置した後、アステリックが表示されます。

于 2012-05-15T12:10:36.560 に答える
0

送信ボタン イベントでPage.IsValidを使用してみてください。

if (!Page.IsValid) {
  return;
}
于 2012-05-15T05:35:39.043 に答える