【问题标题】:Required field validator for User control not working用户控件的必填字段验证器不起作用
【发布时间】:2012-05-22 13:19:27
【问题描述】:

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

<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 完成了它,现在除了星号之外一切都很好。我不明白为什么星号是不可见..

【问题讨论】:

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


    【解决方案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" />
    

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

    【讨论】:

    • 我试过这个,但是,当我点击提交时,我希望一个星号可见。这是不可见的,即使在所有字段“btnSubmit_Click”中输入数据后,甚至都不会被调用...
    • @user1181942 也许您应该将星号作为错误消息而不是描述,并且您正在使用验证组确保提交按钮是相同的验证组
    【解决方案2】:

    尝试在您的提交按钮事件中使用 Page.IsValid

    if (!Page.IsValid) {
      return;
    }
    

    【讨论】:

    • 它已经存在...但是,提交按钮事件没有触发。
    【解决方案3】:

    抱歉给大家带来了麻烦

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

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

    在面板外放置必填字段验证器后,Asteric 可见。

    【讨论】:

      猜你喜欢
      • 2011-05-03
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      相关资源
      最近更新 更多