none
validatorcalloutextender与Ajax RRS feed

  • 问题

  • validatorcalloutextender这个是AjaxControlToolkit里的一个验证控件,我不是很明白他的使用,找了一下资料,能验证但是只出现文本不出现气泡。
    而且还是和自带的验证控件一样 提交页面之后才验证~
    谢谢各位老师的回答,我都不好意思问了

    这是我的代码
       <div class="reg_p">
       <div class="reg_div_left">用户名</div>
       <div class="reg_div_right">
       <asp:TextBox Width="180px" ID="TextBox1" runat="server"></asp:TextBox></div>
       <div class="reg_validator">
       <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="*请填写用户名" ControlToValidate="TextBox1" Display="Dynamic"></asp:RequiredFieldValidator>
       <ajaxToolkit:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" runat="server" TargetControlID="RequiredFieldValidator1" Width="300px">
                </ajaxToolkit:ValidatorCalloutExtender>
            </div></div>
    2009年12月22日 14:54

答案

  • 两控件相冲突?

    不是很理解。下面这个例子是微软文档中关于Ajax ValidatorCalloutExtender的使用。你参考下。

    <div class="demoarea">
            <div class="demoheading">ValidatorCallout Demonstration</div>
            <table>
                <tr>
                    <td>Name:</td>
                    <td><asp:TextBox runat="server" ID="NameTextBox"
                        BorderStyle="solid" BorderWidth="1px" BorderColor="#a9a9a9" /></td>
                </tr>
                <tr>
                    <td>Phone Number:</td>
                    <td><asp:TextBox runat="server" ID="PhoneNumberTextBox"
                        BorderStyle="solid" BorderWidth="1px" BorderColor="#a9a9a9" /></td>
                </tr>
            </table>
            <br />
            
            <asp:RequiredFieldValidator runat="server" ID="NReq"
                ControlToValidate="NameTextBox"
                Display="None"
                ErrorMessage="<b>Required Field Missing</b><br />A name is required." />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="NReqE"
                TargetControlID="NReq"
                HighlightCssClass="validatorCalloutHighlight" />
                
            <asp:RequiredFieldValidator runat="server" ID="PNReq"
                ControlToValidate="PhoneNumberTextBox"
                Display="None"
                ErrorMessage="<b>Required Field Missing</b><br />A phone number is required.<div style='margin-top:5px;padding:5px;border:1px solid #e9e9e9;background-color:white;'><b>Other Options:</b><br /><a href='javascript:alert(&quot;No phone number available in profile.&quot;);'>Extract from Profile</a></div>" />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="PNReqE"
                TargetControlID="PNReq"
                HighlightCssClass="validatorCalloutHighlight"
                Width="350px" />
                
            <asp:RegularExpressionValidator runat="server" ID="PNRegEx"
                ControlToValidate="PhoneNumberTextBox"
                Display="None"
                ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
                ErrorMessage="<b>Invalid Field</b><br />Please enter a phone number in the format:<br />(###) ###-####" />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="PNReqEx"
                TargetControlID="PNRegEx"
                HighlightCssClass="validatorCalloutHighlight" />
                 
            <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_OnClick" /><br /><br />
            <asp:UpdatePanel runat="server" ID="up1">
                <ContentTemplate>
                    <asp:Label id="lblMessage" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>
        </div>
    或者你可以看看下面这个连接。上面代码就是下面例子的实现代码。
    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ValidatorCallout/ValidatorCallout.aspx

    Microsoft Online Community Support
    • 已标记为答案 KeFang Chen 2009年12月28日 5:55
    2009年12月23日 5:42
  • 恩,谢谢回答,我找出原因了,一是我的网站是asp.net网站,应该是AJAXEnabledWebSite网站,需要修改下web.config配置文件
    <httpHandlers>
                
    <remove verb="*" path="*.asmx"/>
                
    <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
        
    </httpHandlers>
    增加以上内容。

    二是需要 
    Ajax ScriptManager 控件

    只有我这种菜鸟才会出这种问题的,呵呵,贴出来希望对后来菜鸟们有所帮助。
    • 已标记为答案 KeFang Chen 2009年12月28日 5:55
    2009年12月23日 9:30

全部回复

  • 用法没错的 注意验证不通过才提示
    如果验证不通过不提示的话 只能说你这个还要引用dll文件

    2009年12月22日 15:21
  • 谢谢啊 是验证可以 但是要提交页面 提交了再验证是否为空 dll文件有引用啊
    2009年12月22日 15:25
  • 我的问题好像不太清楚,我自己研究下拉~ 谁有过这种错误的告诉下啊
    可能和上面老师说的 引用出了问题,我找找
    2009年12月22日 15:29
  • 我的问题好像不太清楚,我自己研究下拉~ 谁有过这种错误的告诉下啊
    可能和上面老师说的 引用出了问题,我找找

    我问你 你说是否验证通过才提示? 我觉得你说的有点矛盾  就是如果通不过验证不提示的话 你这个页面有问题 新建页面看看
    2009年12月22日 15:41
  • 恩 说错了 是通不过验证提示 但是提交页面之后
    AjaxControlToolkit源文件的,不太会用,肯定是引用出错了,希望快点解决啊~
    2009年12月22日 16:14
  • 你好,

    RequiredFieldValidator 就是用来进行客户端验证的。它是利用在客户端生成的脚本进行验证的。客户端验证都没通过,怎么可能提交。
    关于你说的:
    但是提交页面之后“ AjaxControlToolkit源文件的,不太会用,肯定是引用出错了”不知道是什么意思。如果我理解错了,还请你解释下。
    谢谢。
    Microsoft Online Community Support
    2009年12月23日 3:48
  • 你好,

    RequiredFieldValidator 就是用来进行客户端验证的。它是利用在客户端生成的脚本进行验证的。客户端验证都没通过,怎么可能提交。
    关于你说的:
    但是提交页面之后“ ”不知道是什么意思。如果我理解错了,还请你解释下。
    谢谢。
    Microsoft Online Community Support

    谢谢回答,Ajax与验证控件冲突,使用了Ajax之后验证控件就会失灵。先提交页面,然后再验证客户端。
    其实我就是在解决这个问题。才使用的AjaxControlToolkit
    “AjaxControlToolkit源文件的,不太会用,肯定是引用出错了”        bin下的dll引用出错了
    2009年12月23日 4:29
  • 两控件相冲突?

    不是很理解。下面这个例子是微软文档中关于Ajax ValidatorCalloutExtender的使用。你参考下。

    <div class="demoarea">
            <div class="demoheading">ValidatorCallout Demonstration</div>
            <table>
                <tr>
                    <td>Name:</td>
                    <td><asp:TextBox runat="server" ID="NameTextBox"
                        BorderStyle="solid" BorderWidth="1px" BorderColor="#a9a9a9" /></td>
                </tr>
                <tr>
                    <td>Phone Number:</td>
                    <td><asp:TextBox runat="server" ID="PhoneNumberTextBox"
                        BorderStyle="solid" BorderWidth="1px" BorderColor="#a9a9a9" /></td>
                </tr>
            </table>
            <br />
            
            <asp:RequiredFieldValidator runat="server" ID="NReq"
                ControlToValidate="NameTextBox"
                Display="None"
                ErrorMessage="<b>Required Field Missing</b><br />A name is required." />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="NReqE"
                TargetControlID="NReq"
                HighlightCssClass="validatorCalloutHighlight" />
                
            <asp:RequiredFieldValidator runat="server" ID="PNReq"
                ControlToValidate="PhoneNumberTextBox"
                Display="None"
                ErrorMessage="<b>Required Field Missing</b><br />A phone number is required.<div style='margin-top:5px;padding:5px;border:1px solid #e9e9e9;background-color:white;'><b>Other Options:</b><br /><a href='javascript:alert(&quot;No phone number available in profile.&quot;);'>Extract from Profile</a></div>" />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="PNReqE"
                TargetControlID="PNReq"
                HighlightCssClass="validatorCalloutHighlight"
                Width="350px" />
                
            <asp:RegularExpressionValidator runat="server" ID="PNRegEx"
                ControlToValidate="PhoneNumberTextBox"
                Display="None"
                ValidationExpression="((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"
                ErrorMessage="<b>Invalid Field</b><br />Please enter a phone number in the format:<br />(###) ###-####" />
            <ajaxToolkit:ValidatorCalloutExtender runat="Server" ID="PNReqEx"
                TargetControlID="PNRegEx"
                HighlightCssClass="validatorCalloutHighlight" />
                 
            <asp:Button ID="Button1" runat="server" Text="Submit" OnClick="Button1_OnClick" /><br /><br />
            <asp:UpdatePanel runat="server" ID="up1">
                <ContentTemplate>
                    <asp:Label id="lblMessage" runat="server" />
                </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="Button1" EventName="Click" />
                </Triggers>
            </asp:UpdatePanel>
        </div>
    或者你可以看看下面这个连接。上面代码就是下面例子的实现代码。
    http://www.asp.net/AJAX/AjaxControlToolkit/Samples/ValidatorCallout/ValidatorCallout.aspx

    Microsoft Online Community Support
    • 已标记为答案 KeFang Chen 2009年12月28日 5:55
    2009年12月23日 5:42
  • 如果你有AJaxToolKit的源码,你可以编译下,然后在你的项目中通过添加引用把相关dll导入你的项目。

    在工具栏中可以通过选择item,然后选择相应的dll,就可以把所有的ajaxtoolkit中的控件在工具栏中显示出来了。
    Microsoft Online Community Support
    2009年12月23日 5:47
  • 恩,谢谢回答,我找出原因了,一是我的网站是asp.net网站,应该是AJAXEnabledWebSite网站,需要修改下web.config配置文件
    <httpHandlers>
                
    <remove verb="*" path="*.asmx"/>
                
    <add verb="*" path="*.asmx" validate="false" type="Microsoft.Web.Script.Services.ScriptHandlerFactory, Microsoft.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          
    <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
          
    <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
        
    </httpHandlers>
    增加以上内容。

    二是需要 
    Ajax ScriptManager 控件

    只有我这种菜鸟才会出这种问题的,呵呵,贴出来希望对后来菜鸟们有所帮助。
    • 已标记为答案 KeFang Chen 2009年12月28日 5:55
    2009年12月23日 9:30