Подтвердить что ты не робот

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>
4b9b3361

Ответ 1

Похоже, что существует много неправильной информации о значении ValidationSettings: UnobtrusiveValidationMode. Чтобы Отключить, вам нужно сделать следующее.

<add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />

Для отключения этой функции следует использовать слово None, а не 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 библиотека не существует, поэтому вам нужно добавить библиотеку самостоятельно