2017-05-05 69 views
0

这是我的整个页面正文的HTML:的ScriptManager造成回传与验证

<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <div> 
      <asp:TextBox runat="server" ValidationGroup="vg1" ID="txtTest" /> 
      <asp:RequiredFieldValidator runat="server" ErrorMessage="Required" ControlToValidate="txtTest" ValidationGroup="vg1" /> 
      <asp:Button runat="server" ValidationGroup="vg1" Text="test" /> 
     </div> 
    </form> 
</body> 

没有什么在头中。没有额外的.js或类似的东西。

如果我删除ScriptManager,RequiredFieldValidtor完美工作,如果文本框没有填写(如预期的那样显示“Required”),则不允许回发。

随着ScriptManager的到位,回发总是发生。该错误显示但回发仍然发生。是什么赋予了?这并不适用于这种方式。我是否缺少一个参数或者ScriptManager中的一些参数来让这一切都起作用?

.NET版本可能是问题

我已经确定这部作品在.NET 4.0和早期的教完全没有问题,但如果你使用4.5及更高失败。 4.5中断了,还是我没有正确实现?

谢谢!

+1

[为什么ScriptManager导致ASP.NET(Web窗体)中的RequiredFieldValidator回发?](http://stackoverflow.com/questions/31877559/why-scriptmanager-causes-postback-on-requiredfieldvalidator-in- asp-net-web-form) – Gusman

+0

请只编辑你之前的问题,在发布后添加其他信息,不要删除然后重新提问相同的问题(将被标记为已删除的问题)。 –

+0

上一个问题完全不同。这很简单,所以我认为它会比删除整个最后一篇文章的文本并重新开始更好。 –

回答

0

由于.NET版本4.5的介绍不显眼的验证它已成为必须注册您的jQuery资源,你的Global.asax页面如下:

void Application_Start(object sender, EventArgs e) 
{ 
    string JQueryVer = "1.7.1"; 
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition 
    { 
     Path = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js", 
     DebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js", 
     CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js", 
     CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js", 
     CdnSupportsSecureConnection = true, 
     LoadSuccessExpression = "window.jQuery" 
    }); 

} 

但是你还必须定义脚本经理如何正确在类似这样的标记:

<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True"> 
    <Scripts> 
     <asp:ScriptReference Name="jquery" /> 
     <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" /> 
    </Scripts> 
</asp:ScriptManager> 

如果不启用CDN中的验证器不能正常工作,并允许回发。

此信息是从各种资源和试验中获得的。在我原来的问题中,所有必要的是如上所述定义脚本管理器,它工作正常。

希望这些信息可以让开发人员使用验证不显眼的验证回发之间连点。