/ / Obtendo erro ao validar o ASP.NET MVC 3.0 AjaxForm com jQuery - asp.net-mvc-3, jquery, jquery-validate

Obtendo erro ao validar o ASP.NET MVC 3.0 AjaxForm com jQuery - asp.net-mvc-3, jquery, jquery-validate

Tentando usar essa solução para validar o AjaxForm Formulário ASP.Net MVC Ajax com validação jQuery mas estou recebendo erro: Uncaught exception: TypeError: Cannot convert "$("MyFrom").validate()" to object

Meu de:

@using (Ajax.BeginForm("MyFromAction", "Something", null, new AjaxOptions() { OnBegin = "onBeginMyFrom", OnFailure = "onFailureMyFrom", OnSuccess = "onSuccessMyFrom" }, new { @id = "MyFrom" }))
{
}

Meu formulário estava funcionando corretamente e postando no servidor, mas depois de usar a validação do jQuery, estou recebendo o erro acima.

Alguma ideia?

ATUALIZAR: Eu não mencionei que estou usando o MVCContrib FluentHtml.

MVCContrib requerido isto http://weblogs.asp.net/srkirkland/archive/2011/03/08/adding-unobtrusive-validation-to-mvccontrib-fluent-html.aspx para obter um trabalho de validação discreto.

O MvcContrib suportará validação discreta na próxima versão por padrão?

Respostas:

1 para resposta № 1

A resposta que você está vendo foi relacionada a umversão anterior do ASP.NET MVC. Na ASP.NET MVC 3, a validação do cliente é executada usando o plugin de validação do jquery e isso é feito de maneira discreta. Você não precisa de nenhum código para isso. Então, a primeira coisa é ter certeza de que você incluiu os scripts apropriados:

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

então esse javascript discreto e validação estão habilitados no web.config:

<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>

Agora você pode ter seu formulário AJAX se comportando corretamente:

@using (Ajax.BeginForm("MyFromAction", "Competition", null, new AjaxOptions() { OnBegin = "onBeginMyFrom", OnFailure = "onFailureMyFrom", OnSuccess = "onSuccessMyFrom" }, new { @id = "MyFrom" }))
{
...
}

O formulário verificará se há erros de validação no lado do cliente e ele não será enviado até que sejam corrigidos.