No idea on the validators. Probably has something to do with your (clientside?) validation not being registered correctly.
I have some samples i could give you of c# simple implementation. It basically works like this:
ascx code (ajax part):
<asp:Updatepanel ID="updatePnl" runat="server">
<ContentTemplate>
<asp:Repeater id="lstContent" runat="server" OnItemDataBound="lstContent_ItemDataBound">
<HeaderTemplate>
<table>
...
</HeaderTemplate>
<ItemTemplate>
<tr>
<td valign="top" width="50%" align="left">
<asp:HiddenField ID="ItemId" runat="server" Value=<%#DataBinder.Eval(Container.DataItem,"ItemId")%> />
<asp:label ID="Title" runat="server" Text=<%#DataBinder.Eval(Container.DataItem,"Title")%> CssClass="Normal" />
</td>
etc...
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
<asp:linkbutton ID="btnDoSomething" runat=server OnClick="DoSomething" CssClass="normal" ></asp:linkbutton>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnDoSomething" EventName="Click" />
</Triggers>
</asp:Updatepanel>
<asp:UpdateProgress AssociatedUpdatePanelID="updatePnl" runat="server">
<ProgressTemplate>
<img src="/images/progressbar.gif" />
</ProgressTemplate>
</asp:UpdateProgress>
code behind (ajaxc parts):
protected void Page_Load(System.Object sender, System.EventArgs e)
{
if (DotNetNuke.Framework.AJAX.IsInstalled())
{
DotNetNuke.Framework.AJAX.RegisterScriptManager();
}
......
protected void DoSomething(System.Object sender, System.EventArgs e)
{
do stuff
updateRepeater(); (for instance, rebinds the repeater in my case)
}
If you need more, let me know.
......