ASP.Net 2012 Ненавязчивая проверка с помощью jQuery
Я играл с Visual Studio 2012, и я создал пустое веб-приложение ASP.Net, когда я попытался добавить традиционные элементы проверки на новую страницу, эта ошибка возникает:
WebForms UnobtrusiveValidationMode требует ScriptResourceMapping для 'jquery'. Добавьте ScriptResourceMapping с именем jquery (с учетом регистра).
Каковы шаги по его исправлению?
Это моя разметка страницы:
<asp:Panel runat="server" ID="pnlUsername" GroupingText="Username settings">
<div>
<asp:Label ID="usernameLabel" Text="Please enter your username" runat="server" AssociatedControlID="username" />
</div>
<div>
<asp:TextBox runat="server" ID="username" />
<asp:RequiredFieldValidator ErrorMessage="The username is required" ControlToValidate="username" runat="server" Text=" - Required" />
</div>
</asp:Panel>
Ответы
Ответ 1
Похоже, что существует много неправильной информации о значении ValidationSettings: UnobtrusiveValidationMode. Чтобы Отключить, вам нужно сделать следующее.
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
Для отключения этой функции следует использовать слово None, а не WebForms.
Ответ 2
Это официальный ответ Microsoft
Замена версии jQuery на версию, которую вы используете.
Вы также можете отключить эту новую функцию в web.config, удалив следующую строку:
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
Ответ 3
Дополнительная информация о ValidationSettings: UnobtrusiveValidationMode
Указывает, как ASP.NET глобально позволяет встроенным элементам проверки правильности использовать ненавязчивый JavaScript для логики проверки на стороне клиента.
Тип: UnobtrusiveValidationMode
Значение по умолчанию: None
Примечание:
Если для этого значения ключа установлено значение "Нет" [по умолчанию], приложение ASP.NET будет использовать поведение pre-4.5 (встроенный JavaScript на страницах) для клиент- логическая проверка достоверности. Если для этого значения ключа установлено значение "WebForms" , ASP.NET использует атрибуты данных HTML5 и поздний JavaScript с добавленной ссылкой script для логики проверки на стороне клиента.
Пример:
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
</appSettings>
Ответ 4
За исключением требуемого "jquery" ScriptResourceDefinition
в Global.asax(используйте свои собственные пути):
protected void Application_Start(object sender, EventArgs e)
{
ScriptManager.ScriptResourceMapping.AddDefinition(
"jquery",
new ScriptResourceDefinition
{
Path = "/static/scripts/jquery-1.8.3.min.js",
DebugPath = "/static/scripts/jquery-1.8.3.js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "jQuery"
});
}
Кроме того, вам нужно только явно добавить "WebUIValidation.js" после "jquery" ScriptReference
в ScriptManager
(самая важная часть):
<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True">
<Scripts>
<asp:ScriptReference Name="jquery" />
<asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" />
</Scripts>
</asp:ScriptManager>
Если вы добавите его перед "jquery" или если вы не добавите ни одного или оба из них вообще (ASP.Net
автоматически добавит его до "jquery" ) - проверка клиента будет полностью нарушена:/p >
http://connect.microsoft.com/VisualStudio/feedback/details/748064/unobtrusive-validation-breaks-with-a-script-manager-on-the-page
Вам не нужны ни один из этих пакетов NuGet вообще, ни дополнительные ScriptReference
(некоторые из них - просто дубликаты или даже совершенно ненужные навороты), поскольку они автоматически добавляются ASP.Net
, если это необходимо) в вашем блоге.
РЕДАКТИРОВАТЬ: вам не нужно явно добавлять "WebForms.js" (удалено из примера) - и если вы это сделаете, то его LoadSuccessExpression
будет проигнорирован по какой-либо причине
Ответ 5
Добавьте ссылку на Microsoft.JScript
в своем приложении в web.config
, как показано ниже:
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5">
<assemblies>
<add assembly="Microsoft.JScript, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
</assemblies>
</compilation>
<httpRuntime targetFramework="4.5"/>
</system.web>
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="none"/>
</appSettings>
</configuration>
Ответ 6
Вся ошибка проверки достоверности была решена этим
<appSettings>
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None"/>
Ошибка должна исчезнуть, наслаждайтесь....
Ответ 7
Просто скопируйте и вставьте любой файл JQuery в проект и добавьте файл Global.asax
и измените его, как показано ниже:
Я просто вставляю JQuery файл в свой проект и добавляю ссылку в файл Global.asax:
protected void Application_Start(object sender, EventArgs e)
{
ScriptManager.ScriptResourceMapping.AddDefinition(
"jquery",
new ScriptResourceDefinition
{
Path = "~/jquery-1.10.2.js",
DebugPath = "~/jquery-1.10.2.js",
CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.min.js",
CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.2.js",
CdnSupportsSecureConnection = true,
LoadSuccessExpression = "jQuery"
});
}
Ответ 8
В диспетчере пакетов Nuget найдите AspNet.ScriptManager.jQuery вместо jquery.
Таким образом, вам не нужно будет устанавливать сопоставления самостоятельно, и проект будет работать с щелчком простой установки.
Или отключите ненавязчивую проверку, добавив эту строку в тег Конфигурация файла web.config в проекте.
<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
Ответ 9
<add key="ValidationSettings:UnobtrusiveValidationMode" value="WebForms" />
эта строка не была в моем WebConfig так:
Я просто решил этот, понизив целевую .Net версию до 4.0:)
Ответ 10
в visual studio 2012 в web.config измените targetFramework = 4.5 на targetFramework = 4.0
Ответ 11
Я предлагаю вместо этого строки
<div>
<asp:TextBox runat="server" ID="username" />
<asp:RequiredFieldValidator ErrorMessage="The username is required" ControlToValidate="username" runat="server" Text=" - Required" />
</div>
этой строкой
<div>
<asp:TextBox runat="server" ID="username" required />
</div>
Ответ 12
В "файле конфигурации" вместо этого строки:
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
по этим строкам:
<compilation debug="true" targetFramework="4.0" />
<httpRuntime targetFramework="4.0" />
Эта ошибка, поскольку в библиотеке версии 4.0 принадлежит "asp: RequiredFieldValidator", но в версии 4.5 библиотека не существует, поэтому вам нужно добавить библиотеку самостоятельно