WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для 'jquery'. Пожалуйста, добавьте ScriptResourceMapping с именем jquery(с учетом регистра)
Я создаю веб-приложение с помощью Visual Studio 2012. Я пытаюсь добавить количество слов в моем поле. Однако после добавления кодов javascript и html-кодов. Я получаю ошибку, как указано выше.
вот мой javascript codeds
код :
function validateLimit(obj, divID, maxchar) {
objDiv = get_object(divID);
if (this.id) obj = this;
var remaningChar = maxchar - trimEnter(obj.value).length;
if (objDiv.id) {
objDiv.innerHTML = remaningChar + " characters left";
}
if (remaningChar <= 0) {
obj.value = obj.value.substring(maxchar, 0);
if (objDiv.id) {
objDiv.innerHTML = "0 characters left";
}
return false;
}
else
{ return true; }
}
function get_object(id) {
var object = null;
if (document.layers) {
object = document.layers[id];
} else if (document.all) {
object = document.all[id];
} else if (document.getElementById) {
object = document.getElementById(id);
}
return object;
}
function trimEnter(dataStr) {
return dataStr.replace(/(rn|r|n)/g, "");
}
коды сервера на главной странице
<script type="text/javascript" src="js/JScript.js" ></script>
ASPX коды, (Html коды )
<tr>
<th style="width: 595px; height: 135px;">Official Report :</th>
<td colspan="4" style="height: 135px">
<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>
<div id="lblMsg1">500 characters left</div>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server"
ControlToValidate="tbofficial" Display="Dynamic"
SetFocusOnError="True">*</asp:RequiredFieldValidator>
<br />
<asp:Label ID="lblmsg" runat="server"></asp:Label>
<br />
<br />
<asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClick="btnSubmit_Click" />
<asp:Button ID="btnClear" runat="server" Text="Clear" OnClick="btnClear_Click" />
</td>
</tr>
8 ответов:
вам нужна паутина.ключ конфигурации для включения режима проверки pre 4.5.
подробнее о ValidationSettings:UnobtrusiveValidationMode:
указывает, как ASP.NET глобально включает встроенные элементы управления валидатора использовать ненавязчивый JavaScript для логики проверки на стороне клиента.
Тип: UnobtrusiveValidationMode
значение по умолчанию: нет
Примечания: если это ключевое значение установлено к "нет" [по умолчанию], ASP.NET приложение будет использовать поведение до 4.5 (JavaScript inline in страницы) для логики проверки на стороне клиента. Если это значение ключа равно к "WebForms", ASP.NET использует HTML5 данные-атрибуты и поздняя привязка JavaScript из добавленной ссылки на скрипт для проверки на стороне клиента логика.
пример:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
вместо того, чтобы отключить новую функцию, я решил следовать инструкциям ошибки. В моем глобальном.асакс.cs я добавил:
protected void Application_Start(object sender, EventArgs e) { string JQueryVer = "1.7.1"; ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/Scripts/jquery-" + JQueryVer + ".min.js", DebugPath = "~/Scripts/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" }); }
это происходит из сообщение в блоге msdn что подчеркивает некоторые преимущества сопоставления ресурсов скрипта. Особый интерес для меня представлял централизованный контроль над доставкой файлов скриптов на основе "debug=true", EnableCDN и др.
есть по крайней мере три способа отключить использование ненавязчивого JavaScript для проверки на стороне клиента:
- добавить следующее в файл web.конфигурационный файл:
<configuration> <appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings> </configuration>
- установите значение
System.Web.UI.ValidationSettings.UnobtrusiveValidationMode
статическое свойствоSystem.Web.UI.UnobtrusiveValidationMode.None
- установите значение
System.Web.UI.Page.UnobtrusiveValidationMode
свойство экземпляра кSystem.Web.UI.UnobtrusiveValidationMode.None
чтобы отключить функциональность на каждой странице, Я предпочитаю установить
Page.UnobtrusiveValidationMode
свойство с помощью страницы директива:<%@ Page Language="C#" UnobtrusiveValidationMode="None" %>
ненавязчивая проверка включена по умолчанию в новой версии ASP.NET ненавязчивая проверка направлена на уменьшение размера страницы путем замены встроенного JavaScript для выполнения проверки с помощью небольшой библиотеки JavaScript, которая использует jQuery.
вы можете либо отключить ее путем редактирования веб.конфигурация для включения следующего:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> </appSettings>
или еще лучше правильно настроить его, изменив метод Application_Start в Global.асакс:
void Application_Start(object sender, EventArgs e) { RouteConfig.RegisterRoutes(System.Web.Routing.RouteTable.Routes); ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "/~Scripts/jquery-2.1.1.min.js" } ); }
страница 399 из Начало ASP.NET 4.5.1 в C# и VB приводится обсуждение преимуществ ненавязчивой проверки и пошаговое руководство по ее настройке.
для тех, кто ищет RouteConfig. Он добавляется автоматически при создании нового проекта в visual studio в папку App_Code. Содержание выглядит примерно так:
using System; using System.Collections.Generic; using System.Web; using System.Web.Routing; using Microsoft.AspNet.FriendlyUrls; namespace @default { public static class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { var settings = new FriendlyUrlSettings(); settings.AutoRedirectMode = RedirectMode.Permanent; routes.EnableFriendlyUrls(settings); } } }
Я думаю, что столкнулся с тем же затруднительным положением. Я начал сталкиваться с проблемой, когда я изменил:
</system.web> <httpRuntime targetFramework="4.5"/>
который дает сообщение об ошибке, описанное выше.
добавляем:
<appSettings> <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
решает проблему, но тогда это делает ваши элементы управления проверки / скрипты выбрасывают ошибки времени выполнения Javascript. Если вы измените на:
</system.web> <httpRuntime targetFramework="4.0"/>
вы должны быть в порядке, но вы должны будете убедиться, что остальная часть вашего кода делает / ведет себя по желанию. Возможно, Вам также придется отказаться от некоторых новых функций, доступных только в версии 4.5.
P. S. Это настоятельно рекомендуется прочитать следующие перед реализацией этого решения. Особенно, если вы используете асинхронную функциональность:
https://blogs.msdn.microsoft.com/webdev/2012/11/19/all-about-httpruntime-targetframework/
обновление апрель 2017: После некоторых экспериментов и тестирования я придумали комбинацию, которая работает:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" /> <httpRuntime targetFramework="4.5.1" />
С:
jQuery версия 1.11.3
, чтобы добавить немного больше к ответу от b_levitt... по глобальному.асакс:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.SessionState; using System.Web.UI; namespace LoginPage { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { string JQueryVer = "1.11.3"; ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition { Path = "~/js/jquery-" + JQueryVer + ".min.js", DebugPath = "~/js/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" }); } } }
по умолчанию.aspx
<body> <form id="UserSectionForm" runat="server"> <asp:ScriptManager ID="ScriptManager" runat="server"> <Scripts> <asp:ScriptReference Name="jquery" /> </Scripts> </asp:ScriptManager> <%--rest of your markup goes here--%> </form> </body>
проблема возникла из-за валидатора управления. Просто добавьте ссылку на запрос J на свою веб-страницу следующим образом, а затем добавьте параметры проверки в свой веб-сайт.конфигурационный файл для преодоления проблемы. Я тоже столкнулась с той же проблемой и дал решение моей проблемы.
Шаг 1:
Шаг 2 :
он разрешит ваш проблема.
Если ваш код или конфигурация выглядят правильно после просмотра других ответов, у меня также была эта проблема с развернутым (этап разработки) веб-сайтом и обнаружил, что проблема заключается в том, что глобальный.файл asax был переименован. (По мне, несколько дней назад, когда возиться с customErrors и Application_Error)