积极答复者
validatorcalloutextender与Ajax

问题
-
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>
答案
-
两控件相冲突?
不是很理解。下面这个例子是微软文档中关于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("No phone number available in profile.");'>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
-
恩,谢谢回答,我找出原因了,一是我的网站是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
全部回复
-
你好,
RequiredFieldValidator 就是用来进行客户端验证的。它是利用在客户端生成的脚本进行验证的。客户端验证都没通过,怎么可能提交。
关于你说的:
但是提交页面之后“ ”不知道是什么意思。如果我理解错了,还请你解释下。
谢谢。
Microsoft Online Community Support
谢谢回答,Ajax与验证控件冲突,使用了Ajax之后验证控件就会失灵。先提交页面,然后再验证客户端。
其实我就是在解决这个问题。才使用的AjaxControlToolkit
“AjaxControlToolkit源文件的,不太会用,肯定是引用出错了” bin下的dll引用出错了 -
两控件相冲突?
不是很理解。下面这个例子是微软文档中关于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("No phone number available in profile.");'>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
-
恩,谢谢回答,我找出原因了,一是我的网站是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