jquery discreto

Eu estou tentando include o unobtrusive.js para minha visão de mvc3, mas quando eu faço, eu recebo um monte de erros quando a exibição é processada. A exceção está no script discreto, em qualquer lugar onde ele verifica algo contra ‘indefinido’ como esta linha aqui

if(message !== undefined) //Compare against undefined, because an empty message is legal 

O erro que estou recebendo é

Erro de tempo de execução do Microsoft JScript: ‘indefinido’ é nulo ou não é um object

Aqui está a minha declaração de script para o meu ponto de vista.

      

Você precisa usar jquery.validate.min.js vez de jquery.validate.unobtrusive.js

Se você quiser:

  • Use a validação do modelo .NET (atributos de annotations de dados)
  • Use os atributos de dados html5 em vez de classs css não semânticas

Você precisa de ambos: jquery.validate AND jquery.validate.unobtrusive

Referências de script:

Nota: Neste exemplo, os arquivos js estão localizados na pasta “public” no projeto / site, mas você usa endereços de CDN da Microsoft, se possível.

   

Modelo:

 public class PimpModel { [Required] [StringLength(20)] [DisplayName("Pimp Name")] public string PimpName { get; set; } } 

Configurações do Web.config

      

Visualizar o código do formulário

 @model SomeProject.Models.PimpModel @{ View.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; Html.EnableUnobtrusiveJavaScript(true); } 

Pimp

@using (Html.BeginForm()) { @Html.ValidationSummary(true)
@Html.ValidationMessageFor(model => model.PimpName)
@Html.LabelFor(model => model.PimpName)
@Html.TextBoxFor(model => model.PimpName)
}

Os ajudantes html geram atributos de dados no formulário html que são usados ​​pela biblioteca não intrusiva, a biblioteca discreta usa funções na biblioteca de validação e todos os dias felizes …

Certifique-se de ter o seguinte em sua configuração.

     

Embora jQuery seja Open Source, a biblioteca ‘jquery.validate.unobtrusive.min.js’ foi fornecida pela Microsoft (conforme indicado no topo do meu arquivo js):

 /* ** Unobtrusive validation support library for jQuery and jQuery Validate ** Copyright (C) Microsoft Corporation. All rights reserved. */ 

Tente replace a biblioteca para usar o novo substituto jquery.validate.min.js

Uma maneira é usar o Gerenciador de Pacotes NuGet do Visual Studio da seguinte maneira:

  1. Clique com o botão direito na pasta References do seu projeto
  2. Selecione “Adicionar referência do pacote da biblioteca …”
  3. Quando a janela abrir, selecione ‘Online’ no menu da barra lateral esquerda.
  4. No canto superior direito, digite “jquery.validate” e pressione a tecla enter.
  5. Localize o ‘jQuery Validation’ e clique no botão ‘Install’ .
  6. Altere seu código para usar o novo nome da biblioteca ‘jquery.validate.min.js’

Eu testei isso e minha validação de campo do lado do cliente tudo parece funcionar sem as exceções irritantes ao depurar no Visual Studio.