asp.net WebForms UnobtrusiveValidationMode需要“jquery”的ScriptResourceMapping,请添加名为jquery的ScriptResourceMapping(区分大小写)

y53ybaqx  于 2023-11-20  发布在  .NET
关注(0)|答案(8)|浏览(166)

我正在使用Visual Studio 2012构建一个Web应用程序。我试图将字数统计添加到我的文本框中。但是在添加JavaScript代码和HTML代码后。我收到如上所述的错误。
这是我的JavaScript代码
代码:

  1. function validateLimit(obj, divID, maxchar) {
  2. objDiv = get_object(divID);
  3. if (this.id) obj = this;
  4. var remaningChar = maxchar - trimEnter(obj.value).length;
  5. if (objDiv.id) {
  6. objDiv.innerHTML = remaningChar + " characters left";
  7. }
  8. if (remaningChar <= 0) {
  9. obj.value = obj.value.substring(maxchar, 0);
  10. if (objDiv.id) {
  11. objDiv.innerHTML = "0 characters left";
  12. }
  13. return false;
  14. }
  15. else
  16. { return true; }
  17. }
  18. function get_object(id) {
  19. var object = null;
  20. if (document.layers) {
  21. object = document.layers[id];
  22. } else if (document.all) {
  23. object = document.all[id];
  24. } else if (document.getElementById) {
  25. object = document.getElementById(id);
  26. }
  27. return object;
  28. }
  29. function trimEnter(dataStr) {
  30. return dataStr.replace(/(\r\n|\r|\n)/g, "");
  31. }

字符串
母版页中的服务器代码

  1. <script type="text/javascript" src="js/JScript.js" ></script>


ASPX代码,(Html代码)

  1. <tr>
  2. <th style="width: 595px; height: 135px;">Official Report :</th>
  3. <td colspan="4" style="height: 135px">
  4. <asp:TextBox ID="tbofficial" runat="server" Height="121px" TextMode="MultiLine" Width="878px" MaxLength="500" ToolTip="Summary:(500 characters)" onkeyup="return validateLimit(this, 'lblMsg1', 500)" ></asp:TextBox>
  5. <div id="lblMsg1">500 characters left</div>
  6. <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
  7. ControlToValidate="tbofficial" Display="Dynamic"
  8. SetFocusOnError="True">*</asp:RequiredFieldValidator>
  9. <br />
  10. <asp:Label ID="lblmsg" runat="server"></asp:Label>
  11. <br />
  12. <br />
  13. <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
  14. <asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
  15. </td>
  16. </tr>

ljo96ir5

ljo96ir51#

您需要一个web.config密钥来启用4.5之前的验证模式。
更多关于**ValidationSettings:UnobtrusiveValidationMode**的信息:

  • ValidationSettings:UnobtrusiveValidationMode

指定ASP.NET如何全局地使内置验证程序控件能够使用不显眼的JavaScript进行客户端验证逻辑。
| | |
| --|--|
| 型号:|UnobtrusiveValidationMode的|
| 预设值:|没有一|
| 备注:|如果将此键值设置为“无”[默认值],则ASP.NET应用程序将使用4.5之前的行为(页中内联的JavaScript)进行客户端验证逻辑。如果将此键值设置为“WebForms”,则ASP.NET将使用HTML5数据属性和来自添加的脚本引用的后期绑定JavaScript进行客户端验证逻辑。|
| 范例:|

  1. <appSettings>
  2. <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  3. </appSettings>

字符串|

展开查看全部
mbskvtky

mbskvtky2#

我没有禁用一个新功能,而是选择按照错误的说明操作。在我的global.asax.cs中,我添加了:

  1. protected void Application_Start(object sender, EventArgs e)
  2. {
  3. string JQueryVer = "1.7.1";
  4. ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
  5. {
  6. Path = "~/Scripts/jquery-" + JQueryVer + ".min.js",
  7. DebugPath = "~/Scripts/jquery-" + JQueryVer + ".js",
  8. CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
  9. CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
  10. CdnSupportsSecureConnection = true,
  11. LoadSuccessExpression = "window.jQuery"
  12. });
  13. }

字符串
这来自一个msdn blog post,它突出了脚本资源Map的一些优点。我特别感兴趣的是基于“debug=true”,EnableCDN等对脚本文件的交付进行集中控制。

展开查看全部
llew8vvj

llew8vvj3#

至少有三种方法可以禁止使用不显眼的JavaScript进行客户端验证:
1.将以下内容添加到web.config文件中:

  1. <configuration>
  2. <appSettings>
  3. <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  4. </appSettings>
  5. </configuration>

1.将System.Web.UI.ValidationSettings.UnobtrusiveValidationMode静态属性的值设置为System.Web.UI.UnobtrusiveValidationMode.None
1.将System.Web.UI.Page.UnobtrusiveValidationMode示例属性的值设置为System.Web.UI.UnobtrusiveValidationMode.None
要在每个页面上禁用该功能,我更喜欢使用page指令设置Page.UnobtrusiveValidationMode属性:

  1. <%@ Page Language="C#" UnobtrusiveValidationMode="None" %>

展开查看全部
hts6caw3

hts6caw34#

在新版本的ASP.NET中,默认情况下启用了非侵入性验证。非侵入性验证旨在通过使用jQuery的小型JavaScript库替换用于执行验证的内联JavaScript来减小页面大小。
您可以通过编辑web.config来禁用它,以包括以下内容:

  1. <appSettings>
  2. <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  3. </appSettings>

字符串
或者修改global.asax中的Application_Start方法来正确配置它:

  1. void Application_Start(object sender, EventArgs e)
  2. {
  3. RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes);
  4. ScriptManager.ScriptResourceMapping.AddDefinition("jquery",
  5. new ScriptResourceDefinition
  6. {
  7. Path = "/~Scripts/jquery-2.1.1.min.js"
  8. }
  9. );
  10. }


《用C#和VB开始ASP.NET 4.5.1》的第399页讨论了非侵入性验证的好处,并提供了配置它的演练。
对于那些寻找RouteConfig的人。当你在Visual Studio中创建一个新项目时,它会自动添加到App_Code文件夹中。内容如下所示:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Web.Routing;
  5. using Microsoft.AspNet.FriendlyUrls;
  6. namespace @default
  7. {
  8. public static class RouteConfig
  9. {
  10. public static void RegisterRoutes(RouteCollection routes)
  11. {
  12. var settings = new FriendlyUrlSettings();
  13. settings.AutoRedirectMode = RedirectMode.Permanent;
  14. routes.EnableFriendlyUrls(settings);
  15. }
  16. }
  17. }

展开查看全部
tf7tbtn2

tf7tbtn25#

在global.asax上的B_levitt.的回答中添加更多内容:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.Security;
  6. using System.Web.SessionState;
  7. using System.Web.UI;
  8. namespace LoginPage
  9. {
  10. public class Global : System.Web.HttpApplication
  11. {
  12. protected void Application_Start(object sender, EventArgs e)
  13. {
  14. string JQueryVer = "1.11.3";
  15. ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition
  16. {
  17. Path = "~/js/jquery-" + JQueryVer + ".min.js",
  18. DebugPath = "~/js/jquery-" + JQueryVer + ".js",
  19. CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js",
  20. CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js",
  21. CdnSupportsSecureConnection = true,
  22. LoadSuccessExpression = "window.jQuery"
  23. });
  24. }
  25. }
  26. }

字符串
在您的默认.aspx

  1. <body>
  2. <form id="UserSectionForm" runat="server">
  3. <asp:ScriptManager ID="ScriptManager" runat="server">
  4. <Scripts>
  5. <asp:ScriptReference Name="jquery" />
  6. </Scripts>
  7. </asp:ScriptManager>
  8. <%--rest of your markup goes here--%>
  9. </form>
  10. </body>

展开查看全部
nwlqm0z1

nwlqm0z16#

我相信我也遇到了同样的困惑。当我改为:

  1. </system.web>
  2. <httpRuntime targetFramework="4.5"/>

字符串
这会给出上面描述的错误消息。
增加:

  1. <appSettings>
  2. <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />


解决了这个问题,**但它会使您的验证控件/脚本抛出JavaScript运行时错误。**如果您更改为:

  1. </system.web>
  2. <httpRuntime targetFramework="4.0"/>


你应该没问题,但你必须确保你的代码的其余部分按照你想要的那样做/行为。你可能还必须放弃一些只有在4.5以后才能使用的新功能。

P.S.强烈建议您在实施此解决方案之前阅读以下内容。特别是如果您使用异步功能:

https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/

**2017年4月更新:**经过一些实验和测试,我想出了一个有效的组合:

  1. <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
  2. <httpRuntime targetFramework="4.5.1" />


使用:
jQuery版本1.11.3

展开查看全部
kwvwclae

kwvwclae7#

这个问题是由于控制验证器而发生的。只需将J Query引用添加到您的网页,如下所示,然后在您的web.config文件中添加验证设置来克服这个问题。我也面临着同样的问题,下面给出了解决我的问题的方法。

第一步:


的数据

第二步:



它会解决你的问题。

tp5buhyn

tp5buhyn8#

它有3个解决方案,其他人告诉上层.但当尝试Application_Start解决方案,我的其他jQuery库,如Pickup_Date_and_Time不工作.所以我测试第二种方法,它的答案:1-设置目标FrameWork到前4.5 2-使用“UnobtrusiveValidationMode=“无”“在你的页眉=>

  1. <%@ Page Title="" Language="C#"
  2. MasterPageFile="~/Master/MasteOfHotel.Master"
  3. UnobtrusiveValidationMode="None" %>

字符串
它对我很有效,不会破坏我的其他jQuery函数。

相关问题