用户控件不可用的必填字段验证器

时间:2012-05-15 03:30:27

标签: c# asp.net user-controls asp.net-ajax

您好我已经为可重新调整大小的文本框创建了用户控件。

<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”似乎不是强制性的。 代码有什么问题?

修改

好吧......我得到了什么问题,一个控件被隐藏了,并且该控件的必需字段验证器没有被禁用,我使用jquery做了它,现在除了星号之外一切都很好..我不明白为什么星号是不可见..

3 个答案:

答案 0 :(得分: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" />

在用户控制器中,在呈现页面后可能无法识别它。

答案 1 :(得分:0)

尝试在“提交”按钮事件中使用 Page.IsValid

if (!Page.IsValid) {
  return;
}

答案 2 :(得分:0)

抱歉所有麻烦,

页面上有一个被隐藏的控件,并且未禁用该控件的必需字段验证器。我使用像

这样的jQuery禁用它
$(document).ready(function () {
    if (!$("#<%=TextBoxResizable.ClientID %>").is(":visible")) {
        ValidatorEnable(<%=rfvTextBoxResizable.ClientID %>, false);
    }
})

在Panel外部放置必要的字段验证器后,可以看到Asteric。